获取字段名称和检查数组列表?

时间:2013-09-21 07:28:33

标签: java android reflection

使用下面的方法我可以传递任何类,我可以获得列表的值。

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

2 个答案:

答案 0 :(得分: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>
    }
}

更多信息:

答案 1 :(得分:0)

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