Nombres de variables dinámicas Java

¿Cómo podré recuperar el valor de una variable que tiene un nombre dynamic?

Por ejemplo, tengo una lista de constantes

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)"; } 

Basado en la base de datos construyo un nombre de variable

 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 

Use un HashMap normal con nombres de variables como cadenas en comparación con sus valores. O use un EnumMap con enumeraciones como clave y su valor como valores. AFAIK, eso es lo más cercano que puedes obtener cuando usas Java. Claro, puedes perder el tiempo con la reflexión, pero IMO el enfoque del mapa es mucho más lógico.

Puede usar un Map y ubicar el valor por su clave.

Aún mejor, puedes tener una enum :

 public enum Foo { S_R("Standard", 240), S_W("Standard", 180),...; private String type; private String duration; // constructor and getters } 

Y luego llame a Foo.valueOf(name)

(También puede hacerlo a través de la reflexión – Constants.class.getField(fieldName) y luego invocar field.get(null) (null para static). Pero eso no es realmente un buen enfoque).

Si realmente debe hacer esto (y es poco probable), debería usar las API de “reflexión” de Java.