簡體   English   中英

Java使用HashMap和switch語句

[英]Java using HashMap with switch statement

我有一個常量類,在其中保存了常量的HashMaps,例如:

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;

程序仍然找不到MANUAL,AUTO或EXIT。 任何想法?

PS:我不想使用Enums(這是我現在具有常量結構的方式,但是我認為擁有許多常量類的事實很難遵循代碼),並且我不想讓常量聲明為一個被一個人喜歡:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM