2012-07-12 162 views
7

我在這裏遇到問題。我創建了SpecialCharacterField.java - 一個枚舉類,它將列出一些特殊字符。java - 如何在枚舉中添加特殊字符?

SpecialCharacterField.java

package bp.enumfield; 

public enum SpecialCharacterField { 
    +, #; 
} 

在我的就行了日食:public enum SpecialCharacterField{有它說的錯誤:Syntax error, insert "EnumBody" to complete EnumDeclaration

請幫助。提前致謝。

+2

你不能。看看這個http://www.coderanch.com/t/515142/java/java/Including-sign-Enum – vikiiii 2012-07-12 04:55:50

+0

你也許也想看看我的回答。它與目前的「Accepted」有很大不同 – Bohemian 2012-07-12 07:28:48

回答

9

做這樣的事情,

public enum SpecialCharacterField{ 
    PLUS("+"), 
    HASH("#"); 

    private String value; 
    private SpecialCharacterField(String value) 
    { 
     this.value = value; 
    } 

    public String toString() 
    { 
     return this.value; //This will return , # or + 
    } 
} 
+0

你用十秒鐘打敗了我,寫的代碼非常相同。 :-) – Wyzard 2012-07-12 05:02:10

+0

@Wyzard :)你在哪裏寫了完全相同的代碼? – Lion 2012-07-12 05:03:57

+4

@Lion,在我寫的答案中,然後刪除,因爲它是多餘的。 – Wyzard 2012-07-12 05:04:38

5

這些字符不能是Java語言中標識符的一部分。請注意,JVM本身沒有這種限制(只有./;和[被阻止)),因此如果直接編寫字節碼,則可以使用類似的名稱。然而,這通常不是一個理想的方法。

3

枚舉可以有字段和getter就像普通班。

public enum SpecialCharacterField{ 
    Plus('+'), 
    Hash('#'); 

    private final char character; 
    private SpecialCharacterField(char character) { 
     this.character = character; 
    } 

    public char getCharacter() { 
     return character; 
    } 
} 

注:避免覆蓋toString() - 這樣做是反模式:toString()是「只有人眼」 - 它不應該在代碼依靠。