Вопрос-ответ

Dynamic variable names Java

Динамические имена переменных Java

Как я смогу получить значение переменной с динамическим именем

Например, у меня есть список констант

public class Constant{
public static final String S_R = "Standard(240)";
public static final String S_W = "Standard(180)";
public static final String L_R = "Large(360)";
public static final String L_W = "Large(280)";
}

На основе базы данных я создаю имя переменной

String varName = "S" + "_"  +"R"; // This can be S_R , S_W , L_R or L_W
String varVal = // How do i get value of S_R
Переведено автоматически
Ответ 1

Используйте обычную хэш-карту с именами переменных в качестве строк против их значений. Или используйте EnumMap с перечислениями в качестве ключа и вашим значением в качестве значений. AFAIK, это самое близкое, что вы можете получить при использовании Java. Конечно, вы можете возиться с отражением, но IMO картографический подход намного логичнее.

Ответ 2

Вы можете использовать a Map<String, String> и найти значение по его ключу.

Еще лучше, вы можете иметьenum:

public enum Foo {
S_R("Standard", 240),
S_W("Standard", 180),...;

private String type;
private String duration;

// constructor and getters
}

А затем вызовите Foo.valueOf(name)

(Вы также можете сделать это с помощью reflection - Constants.class.getField(fieldName) а затем вызвать field.get(null) (null для static). Но это не совсем хороший подход.)

Ответ 3

Если вам действительно необходимо это сделать (а это маловероятно), вам придется использовать Java "reflection" API.

java