如何将值传递给方法?

时间:2015-01-27 10:02:37

标签: java class enums constants

在下面的代码中,我很难编码USER_AND_ADMIN

this.contentUrl.getUtils().createType(url, user, content,USER_AND_ADMIN);

USER_AND_ADMIN会根据情况发生变化;我可能需要传递的其他类型包括USERADMINNONE

有人可以帮忙吗?

2 个答案:

答案 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 );