如果我在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()方法。
我知道反射是解决方案,但我发现这样做没有任何效率。有人可以通过一些有效且简单的示例代码来帮助我做到这一点吗?
非常感谢...
答案 0 :(得分:2)
您可以使用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()
}
答案 1 :(得分:0)
尝试使用BeanUtils,
val photoView= mView.findViewById(R.id.zoomImageView)
假设您知道Employee对象的所有字段都有:
val photoView:PhotoView= mView.findViewById(R.id.zoomImageView) as PhotoView
答案 2 :(得分:0)
好吧,如果您确实愿意,可以拨打电话:
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
如果字符串"name"
中有"age"
或something
,剩下的任务就是做类似的事情
"get"+something.substring(0,1).toUpperCase()+something.substring(1)