2013-02-17 63 views
4

即時通訊使用下面的代碼找到反射中的原始和一些對象的類成員,我的問題是有一種方法來確定字段是類型基元,對象,類因爲我想根據類型調用具體的方法。 例如,如果字段是handlePrimitive原始呼叫,如果字段類型的其他類型的參考(在下面SalesOrderItemPK的PrimaryKey的例子;)調用方法handleClassReferance等檢查反射如果類型是原始的或類型是對象

的只是認識我需要得到的類和invistigate它根據創建數據對成員類型...

for (Object clsObj : listClsObj) { 
     Field[] declaredFields = clsObj.getClass().getDeclaredFields(); 
     numOfEntries = 1; 
     do { 
      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(); 


       if (genericType instanceof ParameterizedType) { 
        ParameterizedType pt = (ParameterizedType) genericType; 
        for (Type typeOfReferance : pt.getActualTypeArguments()) { 

         String classTypeName = typeOfReferance.toString(); 
         String[] parts = classTypeName.split(" "); 
         memberReferance = parts[1]; 

在這裏,我想根據數據類型

public static SwitchInputType<?> switchInput(final String typeName, final String memberName, final int cnt) { 
    if (typeName.equals("java.lang.String")) { 
     return new SwitchInputType<String>(new String(memberName + " " + cnt)); 
    } else if (typeName.equals("char")) { 
     return new SwitchInputType<Character>(new Character('a')); 

的類爲例打電話,可處理領域的具體方法e應該看起來像這樣,我需要知道primaryKey鍵來創建一個對象。

@Entity 
public class SalesOrderItem 
{ 
    @EmbeddedId 
    SalesOrderItemPK primaryKey; 
    private String ProductId; 
    private String Notes; 

回答

15

如果你不叫.toString(),而是投給TypeClass,你.isPrimitive()

+0

和者均基於代碼輸入到該行的時候,例如我們在類類型其他類有成員實例:private列表 jobList = new ArrayList (); – 2013-02-17 15:05:23

+0

例如我發現這個代碼如果類型是原始的,但我應該知道類型字符串是哪種類型? – 2013-02-17 15:40:21

+1

我沒有得到這個問題 – Bozho 2013-02-17 18:02:24

相關問題