在下面的代码中,我很难编码USER_AND_ADMIN
:
this.contentUrl.getUtils().createType(url, user, content,USER_AND_ADMIN);
USER_AND_ADMIN
会根据情况发生变化;我可能需要传递的其他类型包括USER
,ADMIN
和NONE
。
有人可以帮忙吗?
答案 0 :(得分:0)
创建一个像这样的枚举
public enum UserType {
USER_AND_ADMIN, USER, ADMIN, NONE;
}
然后在方法声明中使用它:
... methodName(... , UserType userType, ...) { ...
调用方法时,您只需要执行此操作:
this.contentUrl.getUtils().createType(url, user, content, UserType.USER_AND_ADMIN);
在该方法中,您可以使用String
方法获取#name()
表示:
String userTypeAsString = userType.name();
默认情况下,String表示形式与变量名称相同,因此如果您没有定义自己的#toString()
,则它与#name()
完全相同。如果您需要自定义代表,请编写自己的#toString()
,并使用它代替#name()
。
我更喜欢在适用时使用#name()
,因为您可以确定它未被覆盖 - 因为它是final
的{{1}}方法。
<强>更新强>
如果你真的不想使用Enum
(虽然为什么超出我),你可以使用普通的字符串常量:
enum
然后你分支值:
private static final String USER_AND_ADMIN = "USER_AND_ADMIN";
或者如果您使用的是Java 7或更新版本:
if (userType.equals(USER_AND_ADMIN)) {
....
}
如果您使用的是switch (userType) {
case USER_AND_ADMIN:
// ...
break;
case NONE:
// ...
break;
default:
break;
}
,则交换机也可以在Java 7下工作。
答案 1 :(得分:0)
您可以使用ENUMS
首先创建一个枚举
public enum MyEnumValues{
USER_AND_ADMIN,
USER,
ADMIN,
NONE
}
然后根据枚举使条件代码工作:
MyEnumValues resultScenario = MyEnumValues.NONE;
if(scenaio1)
{
resultScenario = MyEnumValues.USER_AND_ADMIN;
}else if(scenario2)
resultScenario = MyEnumValues.USER;
}
//use and pass it to your method (you might have to change your method signature):
this.contentUrl.getUtils().createType(url, user, content,resultScenario );