通过char Java获取枚举

时间:2013-11-28 16:58:06

标签: java enums

我在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');的方式创建它,是否有可能?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

您可以使用Java 8流进行一行

public static FileType fromName(char name){
    return Arrays.stream(FileType.values()).filter(f -> f.name == name).findAny().orElseThrow(IllegalArgumentException::new);
}