从String常量映射到Java中的int常量的更好方法

Max*_*cer 0 java

我有一大堆音乐符号的图像,我需要对它进行一些处理,并且我需要获得与其文件名对应的整数代码.有23个可能的文件名字符串和23个整数代码,并且在不同的目录下有许多具有相同名称的图像.

我到目前为止的解决方案在下面给出(缩写).我刚刚定义了一个intString常量的加载,然后编写了一个方法,它只是一个庞大的if语句链来进行翻译.

什么是达到同样效果的更好方法?我做的方式看起来真的很糟糕!我想过使用某种方法Map,但我不确定这样做的最好方法.

public class Symbol {
    public static final int TREBLE_CLEF = 0;
    public static final int BASS_CLEF = 1;
    public static final int SEMIBREVE = 2;
    // ...

    public static final String S_TREBLE_CLEF = "treble-clef";
    public static final String S_BASS_CLEF = "bass-clef";
    public static final String S_SEMIBREVE = "semibreve";
    // ...

    public static int stringCodeToIntCode(String strCode) {
        if (strCode == S_TREBLE_CLEF) {
            return TREBLE_CLEF;
        } else if (strCode == S_BASS_CLEF) {
            return BASS_CLEF;
        } else if (strCode == S_SEMIBREVE) {
            return SEMIBREVE;
        } //...

        else {
            return -1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

kos*_*osa 5

我认为你正在寻找Enum,你可以拥有String常量及其值.

例:

public enum YourEnumClass{
    STRING_CONST (5),
    STRING_CONST2 (7),
    .....
     //constructor
     //getValue() method
}
Run Code Online (Sandbox Code Playgroud)

阅读链接教程了解更多详情.