【发布时间】:2017-02-08 20:11:55
【问题描述】:
我有一个方法,它接受一个对象和一个字符串(字符串是对象上的一个字段的名称)。所以我从对象类中获取字段并使用 field.get(object) 来获取值。但我想将该值转换为该字段定义为的任何类。有没有办法在不需要使用@suppressWarnings("unchecked") 的情况下进行强制转换?
这是我的代码。我将它缩短为只使用一个对象,但原始使用了一个对象列表并返回一个映射,其中 map-keys 是字段的对象值,而 map-values 是对象。
public static <T1,T2> T2 getFieldValue(T1 obj, String fieldName){
Field field = null;
T2 value = null;
try {
field = obj.getClass().getField( fieldName );
} catch ( NoSuchFieldException e ) { ... }
if ( field != null ){
try {
value = (T2)field.get(obj); // <--- unchecked cast!!!
} catch ( IllegalAccessException e ) { ... }
}
return value;
}
【问题讨论】:
标签: java generics nested-generics