オブジェクトと文字列を受け取るメソッドがあります (文字列はオブジェクトのフィールドの名前です)。したがって、オブジェクト クラスからフィールドを取得し、field.get(object) を使用して値を取得します。しかし、フィールドが定義されたクラスにその値をキャストしたいと思います。@suppressWarnings("unchecked") を使用せずにそのキャストを行う方法はありますか?
これが私のコードです。1 つのオブジェクトのみを使用するように短縮しましたが、元のオブジェクトはオブジェクトのリストを使用し、マップ キーがフィールドのオブジェクトの値であり、マップ値がオブジェクトであるマップを返します。
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;
}