G'day, 勘误表 ...我的计划如下所示。此更新旨在澄清并为深夜问题道歉。编译错误是由于文件中的其他地方的问题。
澄清:简单的Java 枚举,如下所示:
public enum ServiceSource
{
NONE,
URL,
FILE;
}
想要检查, isURL ():
public boolean isURL(){
return (URL == this);
}
这有效(并且编译)......毫无疑问 - 正确回答: dasblinkenlight 和 Elliott Frisch 。 非常感谢你的时间。
另见:
答案 0 :(得分:5)
答案 1 :(得分:2)
如果你想拥有多态的方法 - 即对你的enum
类的不同实例(值)表现出不同的行为,我的偏好是覆盖一个常用的方法:
public enum ServiceSource {
NONE("no_value"),
URL("url"){
@Override
public boolean isURL() {
return true;
}
},
FILE("file");
private final String val;
private ServiceSource(String val) {
this.val = val;
}
public boolean isURL() {
return false;
}
}
但是对于检查这是否是特定enum
值的方法,那么为每个常量添加isXXX
方法似乎非常浪费。真的,使用enum
的原因是你可以写
if(thing == ServiceSource.URL)
代码中的其他地方。
答案 2 :(得分:1)
如果我理解你的问题,你的枚举中的正确方法是使用this
,就像这样,
public enum ServiceSource
{
NONE( "no_value" ),
URL( "url" ),
FILE( "file" );
ServiceSource(String v) {
text =v;
}
private String text;
public boolean isURL() {
return this == URL;
}
}
答案 3 :(得分:0)
您可以在Enum上创建一个方法来检查自身的值,如下所示:
public boolean isURL(){
return (URL == this);
}
但是很难看到这种方法的价值,因为每个Object都有一个内置的equals()方法来完成同样的事情。
if (serviceSource.equals(ServiceSource.URL)) { ... }
这是检查Enum变量(或任何变量)的指定值的更常见和明显的方法。采用第一种方法需要在Enum上使用新的isX()方法;每次添加枚举常量时,您可能都希望有一个新方法。