在 Java 中使用属性名称作为字符串来获取属性的强类型值的最佳方法是什么。
例如:一个 Person 类,其年龄字段为整数,比如 21。如果下面的语句必须为年龄字段返回整数 21,那么 get 方法的实现应该是什么? [注意:21将以整数形式返回]
ObjectUtils.get(person, "age");
示例方法 header
public static <E> E get(Object object, String fieldName);
一种方法是获取字段的类型并显式进行类型转换。
另一种方法是使用 BeanUtils 类(Apache 公共(public)库)中的 getProperty 方法。但是,限制是它仅返回字符串,而不返回强类型值。
是否有更好的方法或库实用程序可以实现此目的?
最佳答案
以下实现达到了目的。
@SuppressWarnings("unchecked")
public static <E> E get(Object object, String fieldName) {
Class<?> clazz = object.getClass();
while (clazz != null) {
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
return (E) field.get(object);
} catch (NoSuchFieldException e) {
clazz = clazz.getSuperclass();
} catch (Exception e) {
return null;
}
}
return null;
}
关于java - 从Java中的对象获取强类型属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711341/