如何通过名称调用getter方法?

时间:2015-02-24 13:47:29

标签: java methods getter

我有以下bean类:

public class A{
        private String field;

        public String getField() {
            return field;
        }

        private String setField(String field) {
            this.field = field;
        }

    }

以下课程:

    public class B{

         public static void main(String[] args){
             A a = new A();
             //do stuff
             String f = //get a's field value
         }
    }

如何获取class A的特定对象的getter返回的值?当然,我可以使用Method.invoke(Object obj, Object... args)调用方法,但我不想手动编写"get"前缀。有可能避免这种情况吗?

2 个答案:

答案 0 :(得分:39)

如何使用java.beans.PropertyDescriptor

Object f = new PropertyDescriptor("field", A.class).getReadMethod().invoke(a);

或更长的版本(与前一版完全相同)

PropertyDescriptor pd = new PropertyDescriptor("field", A.class);
Method getter = pd.getReadMethod();
Object f = getter.invoke(a);

PropertyDescriptor允许我们执行许多操作,例如getReadMethod()

  

获取应该用于读取属性值的方法。

因此,我们可以获得代表java.reflect.Method的getter的field实例。我们现在需要做的只是在我们想要获得结果的bean上调用它。

答案 1 :(得分:4)

另一种简单的方法是使用基本的java反射。

Method fieldGetter = A.getClass().getMethod("getField");
String f = fieldGetter.invoke(A).toString();

就这么简单。 干杯!!