Java 如何从POJO类的属性名调用get set方法
如果在java中获得pojo的属性名,有没有办法从代码中调用getter/setter方法? 假设我有一个简单的pojo班学生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对象,我
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)