Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为这样的枚举构建接口_Java_Interface_Enums - Fatal编程技术网

Java 如何为这样的枚举构建接口

Java 如何为这样的枚举构建接口,java,interface,enums,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.statu

我有以下枚举:

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


谢谢。

在接口中不能指定构造函数或静态方法。要获得一个好的、简洁的解释,请查看本文:

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

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

    问候