Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从POJO类的属性名调用get set方法_Java_Java 8 - Fatal编程技术网

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

Java 如何从POJO类的属性名调用get set方法,java,java-8,Java,Java 8,如果在java中获得pojo的属性名,有没有办法从代码中调用getter/setter方法? 假设我有一个简单的pojo班学生 student{ private String name; private int age; public String getName(){ return name; } public int getAge(){ return age; } } 现在我得到了道具名,比如age,我有了student对象,我

如果在java中获得pojo的属性名,有没有办法从代码中调用getter/setter方法? 假设我有一个简单的pojo班学生

student{
   private String name;
   private int age;

   public String getName(){
      return name;
   }
   public int getAge(){
      return age;
   }
}
现在我得到了道具名,比如age,我有了student对象,我可以调用getAge()方法了

我知道反思是解决办法,但我没有找到任何有效的方法。有谁能帮我用一些高效简单的示例代码来做这件事

非常感谢

您可以使用:

试着用

假设您知道Employee对象的所有字段都有:

private String employeeName;

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

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));
    }
}
产生

如果您在字符串
中有
“name”
“age”
,那么剩下的任务就是执行以下操作

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

您可以使用反射,或者使用带有属性硬编码名称的
switch
语句,或者将
Map
从属性名称映射到lambda,例如
Map
将POJO转换为Json,并将其像映射一样使用。您需要它进行测试吗?
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 called
null
getAge called
0
"get"+something.substring(0,1).toUpperCase()+something.substring(1)