如何返回这样的枚举?
在我用int返回之前,如果没有则返回0,如果是,则返回1,如果是其他则返回2。但这不是一个好方法。那应该怎么做呢。我的代码:
class SomeClass{
public enum decizion{
YES, NO, OTHER
}
public static enum yourDecizion(){
//scanner etc
if(x.equals('Y')){
return YES;
}
else if (x.equals('N')){
return NO;
}
else{
return OTHER;
}
}
}
答案 0 :(得分:8)
我不是“//扫描仪等”但是,方法返回类型应为decizion
:
public static decizion yourDecizion() { ... }
此外,您可以将Y
,N
等值添加到枚举常量中:
public enum decizion{
YES("Y"), NO("N"), OTHER;
String key;
decizion(String key) { this.key = key; }
//default constructor, used only for the OTHER case,
//because OTHER doesn't need a key to be associated with.
decizion() { }
decizion getValue(String x) {
if ("Y".equals(x)) { return YES; }
else if ("N".equals(x)) { return NO; }
else if (x == null) { return OTHER; }
else throw new IllegalArgumentException();
}
}
然后,在该方法中,您可以这样做:
public static decizion yourDecizion() {
...
String key = ...
return decizion.getValue(key);
}
答案 1 :(得分:1)
将您的代码更改为:
class SomeClass{
public enum decizion {
YES, NO, OTHER
}
public static decizion yourDecizion(){
//scanner etc
if(x.equals('Y')){
return decizion.YES;
}
else if (x.equals('N')){
return decizion.NO;
}
else{
return decizion.OTHER;
}
}
}
注意:方法返回类型必须是decizion
而不是enum
,而decizion
应该具有大写名称(因为所有类都应该)。
答案 2 :(得分:1)
我认为你应该做这样的事情,一个枚举类。然后你可以添加你想要的任意数量的类型,方法yourDecizion()将根据给定的参数返回枚举类型。
public enum SomeClass {
YES(0),
NO(1),
OTHER(2);
private int code;
private SomeClass(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public static SomeClass yourDecizion(int x) {
SomeClass ret = null;
for (SomeClass type : SomeClass.values()) {
if (type.getCode() == x)
ret = type;
}
return ret;
}
}
答案 3 :(得分:0)
您可以通过以下方式获取值。在这里,您有私有构造函数,它将初始化您要设置的值,并且当实例方法值被调用时,只需返回 this.key。
public class Application {
enum Day {
MONDAY("Monday"), TUESDAY("Tuesday");
String key;
Day(String str) {
key = str;
}
public String value() {
return this.key;
}
}
public static void main(String[] args) {
System.out.println(Day.MONDAY.value());
}
}