2015-09-18 75 views
1

我嘗試使用反射API通過傳遞類作爲參數傳遞給下面的方法反思:返回錯誤的領域

private void someMethod(Class<?> objClass) throws IOException { 
     String className= objClass.getSimpleName(); 
     Map<String, String> fieldsAndDataType = new LinkedHashMap<>(); 
     for (Field field : objClass.getClass().getDeclaredFields()) 
     { 
      String fieldName = field.getName(); 
      String fieldDataType = field.getType().toString(); 
      fieldsAndDataType.put(fieldName, fieldDataType); 
     } 
     Log.d("here","here "+fieldsAndDataType); 

    } 

我打電話了獲得一類的領域,我是這樣做方法就像

someMethod(MyClass.class); 

但不是返回我「MyClass的」的領域,其中我得到的字段有:

  1. 詩里亞lVersionUID
  2. 名稱

但我的類是具有三個屬性的簡單類和具有一些getter和setter only.However的

字符串的className = objClass.getSimpleName原始數據類型();

正在返回正確的類名。

someMethod()沒有給我我班的成員變量。 我怎樣才能得到它們?

回答

3

你應該objClass.getDeclaredFields()

objClass取代objClass.getClass().getDeclaredFields()MyClass

objClass.getClass()類對象的java.lang.Class

類對象你在你的代碼

都拿到班上 java.lang.Class申報領域
+0

太棒了.........謝謝,它的工作,但你可以詳細說明一下是什麼被送回給我。 – nobalG