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

use*_*882 10 java methods getter

我有以下bean类:

public class A{
        private String field;

        public String getField() {
            return field;
        }

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

    }
Run Code Online (Sandbox Code Playgroud)

以下课程:

    public class B{

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

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

Psh*_*emo 43

如何使用 java.beans.PropertyDescriptor

Object f = new PropertyDescriptor("field", A.class).getReadMethod().invoke(a);
Run Code Online (Sandbox Code Playgroud)

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

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

PropertyDescriptor 允许我们做很多事情,例如它 getReadMethod()

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

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


Ani*_*ath 5

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

Method fieldGetter = A.getClass().getMethod("getField");
String f = fieldGetter.invoke(A).toString();
Run Code Online (Sandbox Code Playgroud)

就如此容易。干杯!