根据名称选择属性并获取值

时间:2016-10-24 11:22:56

标签: java reflection

我有下面的课程,包括getter和setter。

class A{
 private String field1Required;
 private String field2Required;
 private String field3;
 private String field4;
}

假设在我的主程序中,我收到如下填充的对象A

field1Required = false;
field2Required=true, 
field3=true; 
field4=false;

所以我想只选择field1Requiredfield2Required并打印这些属性的值。如何使用反射或任何其他方式实现它?

2 个答案:

答案 0 :(得分:0)

考虑到您的课程定义了getter和setter,您可以使用类似的东西来获得结果。

    A obj = new obj();
        Class clazz = data.getClass();
        Method[] arr = clazz.getDeclaredMethods();
        for (Method method : arr) {
            if (method.getName().contains("get") && 
                    method.getName().contains("Required")) {
                System.out.println(method.invoke(obj));
            }
        }

答案 1 :(得分:0)

A a = new A();
    Field fields [] =a.getClass().getDeclaredFields();
    for (int i=0;i<fields.length;i++) {
        if (fields[i].getName().contains("Required"))
            {fields[i].setAccessible(true);
           System.out.println(fields[i]);
           System.out.println(fields[i].get(a));}}
    }