我写了一个方法。我想根据类返回员工类型。
我在想这里是否有更好的标准实施。
public static EmployeeType decideEmployeeType(String className)
{
if(className.equalsIgnoreCase("A") || className.equalsIgnoreCase("1"))
{
return EmployeeType.ADMIN;
}
else if(className.equalsIgnoreCase("S") || className.equalsIgnoreCase("2"))
{
return EmployeeType.SERVICE;
}
else
{
//throw exception
}
}
有人建议,更好的做法。
答案 0 :(得分:5)
我可以提供一个代码示例,通过更改常量可以轻松扩展而不会妨碍业务逻辑:
private static HashMap<String, EmployeeType> employeeTypeTranslations = new HashMap<String,EmployeeType> () {{
put("a",EmployeeType.ADMIN);
put("s",EmployeeType.SERVICE);
put("1",EmployeeType.ADMIN);
put("2",EmployeeType.SERVICE);
}};
public static EmployeeType decideEmployeeType(String class) {
employeeTypeTranslations.get(class.toLowerCase());
}
这允许您将来可以将此地图外部化为属性文件或XML或其他内容。
答案 1 :(得分:1)
如果您使用的是JDK 7,则可以使用带字符串的开关。
switch(className){
case "A": /* do your stuff */
break;
default:
//do default stuff
}
我不确定你为什么要上课1或A(我想这是因为ProGuard或其他任何混淆器?
如果是,请使用常量。类a = YourClass.getClass();
混淆器会自动更改它。
答案 2 :(得分:1)
没有更好的方法,但你可以使用&#39; valueOf&#39;如果你使用enum。
EmployeeType.valueOf("ADMIN") // return EmployeeType.ADMIN
注意:区分大小写