我有一大堆音乐符号的图像,我需要对它进行一些处理,并且我需要获得与其文件名对应的整数代码。有23个可能的文件名字符串和23个整数代码,并且在不同的目录下有许多具有相同名称的图像。
我到目前为止的解决方案在下面给出(缩写)。我刚刚定义了int
和String
常量的加载,然后编写了一个方法,它只是一个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;
}
}
}
答案 0 :(得分:5)
我认为您正在寻找Enum,您可以在其中使用String常量及其值。
示例:
public enum YourEnumClass{
STRING_CONST (5),
STRING_CONST2 (7),
.....
//constructor
//getValue() method
}
阅读链接教程了解更多详情。
答案 1 :(得分:1)
enum StringToInt{
TREBLE_CLEF(0),
......
}
Enum是要走的路。
另一个例子:
public enum Color {
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);
private int code;
private Color(int c) {
code = c;
}
public int getCode() {
return code;
}
答案 2 :(得分:0)
hashmap怎么样
HashMap<String,Integer> hm=new HashMap<String,Integer();
hm.put("treble-clef",0);
//rest
并使用此
获取它int value=hm.get("treble-clef");