私がやりたいことは、1 つのクラスに格納されている変数に文字列でアクセスすることです。たとえば、私は
public class Values {
public static boolean enabled;
}
そして、プロジェクトの別の部分に、オブジェクトとフィールド名の文字列があります。フィールドの値を取得および設定するにはどうすればよいですか?
私がやりたいことは、1 つのクラスに格納されている変数に文字列でアクセスすることです。たとえば、私は
public class Values {
public static boolean enabled;
}
そして、プロジェクトの別の部分に、オブジェクトとフィールド名の文字列があります。フィールドの値を取得および設定するにはどうすればよいですか?
名前が文字列の場合は、リフレクションを使用する必要があります。
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) );
}
}
Values.enabled = true;
また
Values.enabled = false;
または、クラスの静的ゲッターとセッターを作成し、Values
代わりにそれらの静的メソッドを呼び出すこともできます。
@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);
}
}