2013-02-17 70 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