2 回答
TA贡献1859条经验 获得超6个赞
如果要以键入方式进行操作,则可以使用Enum进行此操作:
enum Season{
Skyrise,Toss_Up, Sack_Attack;
@Override
public String toString() {
switch(this){
case Skyrise: return "Skyrise";
case Toss_Up: return "Toss%20Up";
case Sack_Attack: return "Sack_Attack";
default: return "";
}
}
}
public class main{
public static void printSeason(Seasons seasons){
System.out.println(seasons);
}
public static void main(String[] args) {
Seasons e = Seasons.Skyrise;
printSeason(e);
System.out.println(e);
}
}
由于编译器在内部调用toString(),因此可以像我的示例一样将参数作为Seasons或String传递。
而且,如果您仍想使用没有“不必要地重新生成”的地图,则可以将静态字段与静态初始值设定项一起使用,如下所示:
class Seasons {
private static Map<String,String> map = new HashMap<>();
static {
map.put("Skyrise", "Skyrise");
map.put("Toss_Up", "Toss%20Up");
}
public static String getFormatted(String key){
return map.getOrDefault(key,"");
}
}
class main{
public static void main(String[] args) {
System.out.println(Seasons.getFormatted("Skyrise"));
}
}
TA贡献1993条经验 获得超5个赞
只是为了与Snoob答案集成,您可以使用字段枚举,因此:
enum Season
{
Skyrise("Skyrise"),
Toss_Up("Toss%20Up"),
Sack_Attack("Sack%20Attack")
;
public final String fancyName;
private Season(String fancyName)
{
this.fancyName = fancyName;
}
}
您确实拥有所有好处,而没有任何缺点。
添加回答
举报