0

オブジェクトと文字列を受け取るメソッドがあります (文字列はオブジェクトのフィールドの名前です)。したがって、オブジェクト クラスからフィールドを取得し、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;
}
4

1 に答える 1