2013-11-28 32 views
3

獲取枚舉我有在Java中被燒焦的Java

public enum FileType { 

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

    private char type; 

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

} 

這個簡單enum我想創建一個方法FileType type = FileType.valueOf('d');,是它在某種程度上可能嗎?

+0

你必須覆蓋'valueOf' – Paranaix

回答

3

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

+0

只是寫法同一段代碼: - 謝謝 –

0

可以與Java 8個流爲此在1號線

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