为了账号安全,请及时绑定邮箱和手机立即绑定

如何从POJO类的属性名调用get-set方法

如何从POJO类的属性名调用get-set方法

慕无忌1623718 2019-04-18 14:15:33
有没有办法从我的代码中调用getter / setter方法,如果我在java中获得pojo的属性名称?假设我有一个简单的pojo班级学生student{    private String name;    private int age;    public String getName(){       return name;    }    public int getAge(){       return age;    }}现在在我得到道具名称,说年龄,我有学生对象,我可以调用getAge()方法。我知道反射是解决方案,但我没有找到任何有效的方法来做到这一点。任何人都可以用一些有效而简单的示例代码来帮助我做到这一点......非常感谢...
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以使用Introspector

import java.beans.Introspector;

import java.beans.PropertyDescriptor;



...

String name = "age";

Class beanClass = Student.class;

BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);

PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();

for (PropertyDescriptor descriptor : descriptors) {

    if (!name.equals(descriptor.getName())) {

        continue;

    }

    descriptor.getWriteMethod();

    descriptor.getReadMethod()

}


查看完整回答
反对 回复 2019-05-15
?
富国沪深

TA贡献1790条经验 获得超9个赞

好吧,如果你真的想要,你可以打电话:

public class Student {
    private String name;
    private int age;
    public String getName(){
       System.out.println("getName called");
       return name;
    }
    public int getAge(){
       System.out.println("getAge called");
       return age;
    }}public class Test {
    public static void main(String[] args) throws Exception {
        Student s=new Student();
        System.out.println(s.getClass().getMethod("getName").invoke(s));
        System.out.println(s.getClass().getMethod("getAge").invoke(s));
    }}

产生

getName callednullgetAge called0

如果你有"name""age"在字符串中something,剩下的任务就是做类似的事情

"get"+something.substring(0,1).toUpperCase()+something.substring(1)


查看完整回答
反对 回复 2019-05-15
  • 3 回答
  • 0 关注
  • 1110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信