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

标签 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" 前缀。有没有可能避免这种情况?

最佳答案

如何使用 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()

Gets the method that should be used to read the property value.

因此我们可以获得代表 field getter 的 java.reflect.Method 实例。我们现在需要做的就是简单地在我们想要从中获取结果的 bean 上调用它。

关于java - 如何通过名称调用 getter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697484/

相关文章:

java - 我是否必须为数组的每个元素创建 getter setter?

java - 哪个将首先加载静态变量或静态 block ?

java - Spring引导maven插件: goals and phase

java - 与 S3 连接期间收到的异常

java - 替换字符串数组中的特定字符串

java - 将单个数组返回到多维数组

c++ - 为 C++ 类生成 set/get 方法

Ruby 哈希类方法 has_key? vs方法成员?

c# - C# 4.0 中字典元素的 getter

java - 针对不同数量的参数的多种 getter 方法