3

私がやりたいことは、1 つのクラスに格納されている変数に文字列でアクセスすることです。たとえば、私は

public class Values {
    public static boolean enabled;
}

そして、プロジェクトの別の部分に、オブジェクトとフィールド名の文字列があります。フィールドの値を取得および設定するにはどうすればよいですか?

4

3 に答える 3

9

名前が文字列の場合は、リフレクションを使用する必要があります。

import java.lang.reflect.Field;


public class Values {

    public static boolean enabled = false;

    public static void main(String[] args) throws Exception {           
        Values v = new Values();

        Field field = v.getClass().getField("enabled");

        field.set( v, true );

        System.out.println( field.get(v) );         
    }

}
于 2012-06-09T21:03:34.447 に答える
1
Values.enabled = true;

また

Values.enabled = false;

または、クラスの静的ゲッターとセッターを作成し、Values代わりにそれらの静的メソッドを呼び出すこともできます。

于 2012-06-09T21:00:18.550 に答える
1

@Maricio Linharesの答えはとても良いです。ただし、反射はかなり遅いことに注意してください。これを頻繁に行うと、パフォーマンスの問題が発生する可能性があります。別の方法として、マップを使用することもできます。コードは次のようになります

public class Values {
    public static Map<string,bool> variableMap;

    public static void main(String[] args) throws Exception {           
        // adding a 'variable'
        variableMap = new YourFavoriteMapImplementation();
        variableMap.put("enabled",true);

        // accessing the 'variables' value
        bool val = variableMap.get("enabled");
        System.out.println(val);         
    }
}
于 2012-06-09T22:04:38.450 に答える