我在Java中有这个简单的enum

public enum FileType {

    FILE('-'), DIRECTORY('d'), SYMLINK('l'), DEVICE('b');

    private char type;

    FileType(char type) {
        this.type = type;
    }

}

我想以FileType type = FileType.valueOf('d');的方式创建它,是否有可能?

最佳答案

为了避免混淆,将type重命名为name,但是您明白了。

public enum FileType
{
    FILE('-'), DIRECTORY('d'), SYMLINK('l'), DEVICE('b');

    private char name;

    FileType(char name)
    {
        this.name = name;
    }

    public static FileType getFileTypeForName(final char name)
    {
        for (FileType type : FileType.values())
            if (type.name == name)
                return type;

        return null;
    }
}

另外,请注意valueOf的工作方式如下:

返回具有指定名称的指定枚举类型的枚举常量。

因此,您将使用它来进行FileType type = FileType.valueOf("FILE"); // Yields the FILE enum

10-07 23:47