2012-07-12 11 views
7

Mam tutaj problem. Stworzyłem SpecialCharacterField.java - klasę wyliczającą, która wyświetli kilka znaków specjalnych.java - Jak dodać znak specjalny w enum?

SpecialCharacterField.java

package bp.enumfield; 

public enum SpecialCharacterField { 
    +, #; 
} 

W moim zaćmienia na linii: public enum SpecialCharacterField{ jest błąd mówi: Syntax error, insert "EnumBody" to complete EnumDeclaration

Proszę o pomoc. Z góry dziękuję.

+2

Nie możesz zajrzeć. Http://www.coderanch.com/t/515142/java/java/Including-sign-Enum – vikiiii

+0

Możesz również przyjrzeć się mojej odpowiedzi. Różni się on od aktualnie "Zaakceptowanego" w istotny sposób – Bohemian

Odpowiedz

9

zrobić coś takiego,

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

Pokonałeś mnie o dziesięć sekund z dokładnie tym samym kodem, który napisałem. :-) – Wyzard

+0

@Wyzard :) Gdzie napisałeś dokładnie ten sam kod? – Lion

+4

@Lion, w odpowiedzi, którą napisałem, a następnie usunięto, ponieważ było zbędne. – Wyzard

5

Te znaki nie mogą być częścią identyfikatorów w języku Java. Zauważ, że sama maszyna JVM nie nakłada takich ograniczeń (tylko ./; i [są blokowane), więc możesz użyć takich nazw, jeśli napisałeś kod bajtowy bezpośrednio. Jednak zazwyczaj nie jest to pożądane podejście.

3

teksty stałe mogą mieć pola i getter jak regularnych zajęć.

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

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

    public char getCharacter() { 
     return character; 
    } 
} 

Uwaga: Unikać nadrzędnymi toString() - robi tak jest anty-wzorzec: toString() jest „tylko ludzkich oczu” - nie powinna zostać powołana w kodzie.

Powiązane problemy