使用下面的方法我可以传递任何类,我可以获得列表的值。
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));
}
}
假设我有两个类Student
和Employee
。我不知道他们两个都有多少个字段。我仍然可以使用上述方法获得每个领域的价值。
现在,我想检查一个特定的类是否有任何ArrayList,即假设Student
类的Arraylist<Address>
类Address
。那么我可以得到数组列表值吗?
答案 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)进行比较