2013-02-17 78 views
1

我使用下面的代码来确定类成员类型,我已经看到了所有的自省方法,但还没有完全想出如何为类型如字符串,BigDecimal,日期等。在我的代码中,你可以看到我检查了原语并调用处理它的方法。 1.我想为字符串,BigDecimal,fieldTypeName,java.util.Date等做同样的事情,我应该怎么做?通过反射确定类成员的类型

  1. 这种类型被称为?

为通用类型,例如作业表我使用genericType处理机...

Object newInstance = clsObj.getClass().newInstance(); 

       for (Field field : declaredFields) { 

        // Get member name & types 

        Class<?> fieldType = field.getType(); 
        Type genericType = field.getGenericType(); 
        String fieldTypeName = fieldType.getName(); 
        String memberName = field.getName(); 

        boolean primitive = field.getType().isPrimitive(); 
        handlePrimtive(); 

如果(genericType的instanceof ParameterizedType){

这是类

@Entity 
public class Person { 
@Id 
@GeneratedValue(strategy = GenerationType.TABLE) 
private int id; 
private String firstName; 
private BigDecimal bigDecimal; 
private java.util.Date myDate; 
private List<Job> jobList = new ArrayList<Job>(); 

回答

1
Class <?> type = field.getType(); 
if (String.class.equals (type)) handleString(); 
else if (Date.class.equals (type)) handleDate(); 
... 
+0

有没有通用的方式来处理它?如原始的,因为在这里我需要问每个类型的显式,我不知道我知道所有类型,因为这个类的人是例如,但我可以得到任何类型的附加字段... – 2013-02-17 16:51:56

+0

@JohnJerrby也许我不会不明白你的意思是什么“类型,如String,BigDecimal,Date等”,特别是其他类型转到“etc”。你能澄清还是只列出所有“这样的类型”? – 2013-02-17 17:07:09

+0

这是问题,因为我不知道他们完全是例如如果类成员是类型对象我hadnle它与泛型如果原始我使用is.primitive知道,但对于“其他类型”我不知道我知道他们所有人因此我想以某种方式分散他们,他们如何在Java中调用这种类型的字符串,BigDecimal,日期等? – 2013-02-17 17:16:34