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