如何为这样的枚举构建界面

时间:2008-09-21 23:23:30

标签: java interface enums

我有以下枚举:

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()和构造函数?

感谢。

3 个答案:

答案 0 :(得分:6)

无法在接口中指定构造函数或静态方法。有关简明扼要的解释,请查看以下文章:No static methods in interfaces

答案 1 :(得分:4)

枚举已经有valueOf()(您的查找方法)方法。而“toString()”是一个java.lang.Object方法,因此,每个类都会有这个,换句话说,你不能强迫它!我无法看到强制执行构造函数的价值,因为不同的枚举可以有不同的初始化。

亲切的问候

答案 2 :(得分:3)

  1. 无法在接口中定义静态方法
  2. 构造函数不能在接口中定义
  3. toStringjava.lang.Object中定义,如果未定义方法,则在接口中要求它永远不会导致编译错误。
  4. 为什么要强制执行构造函数?无论如何,您无法在运行时创建enum的新实例(除非可能通过某种反射机制)。