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>ofAddress类。那么我可以获得数组列表值吗?

4

2 回答 2

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>
    }
}

更多信息:

于 2013-09-21T07:38:51.083 回答
0

您可以在字段对象上调用 getDeclaringClass() 并将其与所需的类(例如 ArrayList)进行比较

于 2013-09-21T07:40:30.787 回答