访问界面内的枚举

时间:2016-02-17 00:01:18

标签: java interface enums

我是Java的新手。我有一个接口,有一些我需要实现的方法。在界面内部,有一个类我需要访问的枚举。

看起来像这样:

public interface Operations{
    //some function names that I have to implement
    public static enum ErrorCodes{
        BADFD;
        NOFILE;
        ISDIR;
        private ErrorCode{
        }
    }
}

在我的实现中,当我尝试访问ErrorCodes.BADFD时,它会给我错误。我不知道访问它的正确方法。另外,调用的空private ErrorCode{}是什么。它是构造函数吗?它做了什么?

编辑:添加大写' o'枚举名称

3 个答案:

答案 0 :(得分:7)

首先,让我们更正您的格式错误的代码:

// lowercase "interface"
// Usually interfaces and classes are capitalized
public interface Operations{
    // Singular to match the rest of the code and question.
    public static enum ErrorCode{
        // commas to separate instances
        BADFD,
        NOFILE,
        ISDIR;
        // Parameterless constructor needs ()
        private ErrorCode() {
        }
    }
}

要在界面之外引用ErrorCode,您必须使用ErrorCode的封闭界面Operations对其进行限定。

Operations.ErrorCode code = Operations.ErrorCode.BADFD;

答案 1 :(得分:2)

以下是更正后的

public interface Operations{
//some function names that I have to implement
public static enum ErrorCodes{
    BADFD,
    NOFILE,
    ISDIR;
    private ErrorCodes(){}
}

答案 2 :(得分:1)

我相信你必须以这种方式调用枚举:

Operations.ErrorCode.BADFD

因为ErrorCode是Operation接口的内部枚举。

我注意到几个错字问题,请看一下这段代码:

public interface Operations {
    //some function names that I have to implement
    public static enum ErrorCode {
        BADFD,
        NOFILE,
        ISDIR;
        private ErrorCode() {
        }
    }
}