21

私は方法を持っています:

public void extractStringFromField(Class<?> classToInspect) {
    Field[] allFields = classToInspect.getDeclaredFields();

    for(Field field : allFields) {
        if(field.getType().isAssignableFrom(String.class)) {
            System.out.println("Field name: " + field.getName());

            // How to get the actual value of the string?!?!
            // String strValue = ???
        }
    }
}

これを実行すると、次のような出力が得られます。

Field name: java.lang.String

リフレクションを使用しstrValueて、実際の文字列値を に抽出するにはどうすればよいですか?

4

5 に答える 5

6

理想的な状況では、Classデータを保持しません。Classesインスタンスの構造と動作に関する情報と、使用するデータを保持するインスタンスを保持するだけです。extractStringFromFieldそのため、 (実際に値を抽出する場所から) インスタンスを渡さない限り、メソッドは値を抽出できません。

値を抽出するために渡す参照のパラメーターの名前が である場合、次のinstanceように必要なものを簡単に取得できます。

String strValue = (String)field.get(instance);
于 2013-07-04T04:00:57.337 に答える
0
String strValue = field.getName().toString();

完全なコードは次のようになります。

public static void extractStringFromField(Class<?> Login) {
    Field[] allFields = Login.getDeclaredFields();

    for(Field field : allFields) {
        String strValue = field.getName().toString();
//          if(field.getType().isAssignableFrom(String.class)) {
            System.out.println("Field name: " + strValue);
        }
    }
于 2020-03-17T02:50:29.193 に答える