题
我有以下枚举:
public enum Status implements StringEnum{
ONLINE("on"),OFFLINE("off");
private String status = null;
private Status(String status) {
this.status = status;
}
public String toString() {
return this.status;
}
public static Status find(String value) {
for(Status status : Status.values()) {
if(status.toString().equals(value)) {
return status;
}
}
throw new IllegalArgumentException("Unknown value: " + value );
}
}
是否可以构建StringEnum接口以确保每个枚举都有find(),toString()和构造函数?
感谢。
解决方案
无法在接口中指定构造函数或静态方法。有关简明扼要的解释,请查看以下文章:接口中没有静态方法
其他提示
枚举已经有 valueOf()(你的find方法)方法。并且“toString()”和“toString()”是一个java.lang.Object方法,所以,每个类都会有,换句话说,你不能强迫它!我无法看到强制执行构造函数的价值,因为不同的枚举可以有不同的初始化。
亲切的问候
- 无法在接口中定义静态方法
- 构造函数不能在接口中定义
-
toString
在java.lang.Object
中定义,如果未定义该方法,则在接口中要求它永远不会导致编译错误。
醇>
为什么要强制执行构造函数?您无法在运行时创建 enum
的新实例(除非可能通过某种反射机制)。
不隶属于 StackOverflow