2013-09-21 41 views
0

用下面的方法我可以傳遞任何類,我可以得到列表的值。獲取字段名稱並檢查數組列表是否存在?

public static void GetFieldName(ArrayList<Object> object) 
      throws IllegalArgumentException, IllegalAccessException { 

    for (Object obj : object) 
     for (Field field : obj.getClass().getDeclaredFields()) { 
      Log.i("Field", field.getName() + ":" + field.get(obj)); 

     } 
    } 

假設我有兩個類StudentEmployee。我不知道他們有多少個領域。我仍然可以使用上述方法獲得每個字段的價值。

現在,我想檢查一個特定的類是否有任何ArrayList,即假設Student類有一個Arraylist<Address>Address類。那麼我可以獲得數組列表值嗎?

回答

1

您需要使用Class#isAssignableFrom(Class cls)方法。

for (Field field : obj.getClass().getDeclaredFields()) { 
    Log.i("Field", field.getName() + ":" + field.get(obj)); 
    if (field.getType().isAssignableFrom(ArrayList.class) { 
     field.setAccessible(true); //needed for private fields 
     Object value = field.get(c); //getting the private field value 
     ArrayList<Address> x = (ArrayList<Address>) value; // cast to ArrayList<Address> 
    } 
} 

更多信息:

+0

我怎樣才能得到價值從arraylist如果條件是真的? – nil

+0

簽出[Field](http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html)javadoc。 –

+0

我無法解決我應該使用哪種方法?你可以幫我嗎? – nil

0

可以現場對象調用getDeclaringClass(),並將其與所需類(如ArrayList中)