我有一个常量类,我在其中保存了常量的 HashMap,例如:
import java.util.HashMap;
import java.util.Map;
/**
* Constantes de uso general en el programa.
*/
public final class Consts {
// Opciones del menu de juego.
public static final Map<Integer, String> GAMETYPE;
static
{
GAMETYPE = new HashMap<>();
GAMETYPE.put(1, "MANUAL");
GAMETYPE.put(2, "AUTOMATIC");
GAMETYPE.put(3, "EXIT");
}
/**
*
* @param userType
* @return
*/
public static String valueOf(int userType) {
return GAMETYPE.get(userType);
}
/**
* Impide construir objetos de esta clase.
*/
private Consts(){
// Tampoco permite a la clase nativa llamar al constructor.
throw new AssertionError();
}
}
我想在另一个类的 switch-case 语句中使用这个常量,例如:
userType = sc.nextInt();
switch(Consts.valueOf(userType)) {
case MANUAL:
System.out.println(">> You have selected the manual mode");
break;
case AUTO:
System.out.println(">> You have selected the manual mode");
break;
case EXIT:
System.out.println(">> Good-bye");
break;
程序仍然找不到手动、自动或退出。有什么想法吗?
PS:我不想使用枚举(这就是我现在构造常量的方式,但我认为拥有许多常量类的事实使得难以遵循代码)并且我不想声明常量一一喜欢:
public static final int MANUAL = 1;
public static final int AUTO = 2;
public static final int EXIT = 3;
因为我希望在常量类中构造常量。谢谢!
如果您使用的是 Java 7 或更高版本,您可以执行以下操作:
switch(Consts.valueOf(userType)) {
case "MANUAL"://notice quotes..
System.out.println(">> You have selected the manual mode");
break;
case "AUTO":
System.out.println(">> You have selected the manual mode");
break;
case "EXIT":
System.out.println(">> Good-bye");