java - 获取字段名称并检查数组列表是否存在?

标签 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));

        }
    }

假设我有两个类(class) StudentEmployee 。我不知道他们两个都有多少个领域。我仍然可以使用上述方法获取每个字段的值。

现在,我想检查特定类中是否有任何 ArrayList,即假设 Student类有一个 Arraylist<Address>Address类(class)。那么我可以获得数组列表值吗?

最佳答案

您需要使用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>
    }
}

更多信息:

关于java - 获取字段名称并检查数组列表是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18930082/

相关文章:

c# - 使用反射检测属性上的访问修饰符类型

java - 使用反射获取Java数组中的字段 "length"

java - 如何摆脱这个 while 循环

java - 下载文件并保存到光盘不起作用

java - 创建 2 个数组 - 第一个有随机整数,第二个有唯一的随机整数

android - whatsapp 超链接 - 结合 whatsapp ://send? 与 intent://send/

c# - 动态 Getvalue 返回对象转换为 PropertyInfo.PropertyType

java - 我添加到自定义 Android View 的所有方法都会导致 NullPointerException

android - 容器,如 div、span 等

android - FFMpeg(Android) av_read_frame 或 avcodec_decode_video2 返回相同的颜色