我有一个具有字符串字段的对象。我可以通过调用来获取这个字段:
Field field = someObj.getClass().getField("strField");
我设置了一个Field#set(Object)
方法,用于设置此实例字段的值,但相应的 getter 似乎是Field#get(Object)
,这很奇怪,因为我本来希望它是Field#get()
。
如何获取实例的值strField
?
我有一个具有字符串字段的对象。我可以通过调用来获取这个字段:
Field field = someObj.getClass().getField("strField");
我设置了一个Field#set(Object)
方法,用于设置此实例字段的值,但相应的 getter 似乎是Field#get(Object)
,这很奇怪,因为我本来希望它是Field#get()
。
如何获取实例的值strField
?
如果您使用的是java.lang.reflect.Field
,则“setter”是Field.set(Object,Object)
,“getter”是Field.get(Object)
。在这两种情况下,第一个参数是您要访问该字段的实例。
即使没有属性的 getter 或 setter 方法,您也可以使用对象引用和 Java 反射来更改或获取值。
import java.lang.reflect.Field;
public class Bean {
private String strField;
public static void main(String[] args) throws Exception {
Bean bean = new Bean();
Field field = bean.getClass().getDeclaredField("strField");
field.set(bean, "Hello");
System.out.println(field.get(bean));
}
}
最简单的方法是使用BeanUtils:
String s = BeanUtils.getProperty(someObj, "strField");
请注意,BeanUtils 将尝试将您的属性转换为字符串。你需要有一个属性的getter和setter