猿问

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

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

student{
   private String name;
   private int age;

   public String getName(){
      return name;
   }
   public int getAge(){
      return age;
   }}

现在在我得到道具名称,说年龄,我有学生对象,我可以调用getAge()方法。

我知道反射是解决方案,但我没有找到任何有效的方法来做到这一点。任何人都可以用一些有效而简单的示例代码来帮助我做到这一点......

非常感谢...


慕无忌1623718
浏览 1111回答 3
3回答

回首忆惘然

您可以使用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()}

富国沪深

好吧,如果你真的想要,你可以打电话: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)
随时随地看视频慕课网APP

相关分类

Java
我要回答