有没有办法从我的代码中调用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()
}
富国沪深
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)
添加回答
举报
0/150
提交
取消