2010-07-30 5 views

답변

13

첫 번째 식별자 (변수 이름에 -이 유효하지 않음)와 값 설정 방법에 몇 가지 구문 오류가 있습니다. enum에 =을 사용하지 않지만 대신 생성자를 사용할 수 있습니다. 이것을 시도하십시오 :

enum Type { 

    MPEG2(2), PASSED_PIDS_ID(3), DVB(4), ATSC(5), NA(6), UNDETERMINED(7); 

    private final int value; 

    Type(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return value; 
    } 
} 
+0

이것은 올바른 방법입니다. 열거 형에 대한 ordinal() 메서드는 EnumSet과 같은 Enum 관련 데이터 구조에서 사용하기위한 것입니다. –

2

=<number>을 제거하십시오. 유효하지 않습니다. 또한 첫 번째 유형의 빼기 부호는 유효한 구문이 아닙니다.

Enum에는 Enum의 순서를 반환하는 ordinal()이라는 메서드가 있습니다. 그러나이 메서드를 사용하는 것은 좋지 않습니다. 이후에 새 Enum을 추가하면 목록의 Enums가 모두됩니다. 서문이 하나 더 높다.

당신이 몇 가지 더 많은 데이터를 포함 할 경우, 당신은 당신이 예제로 사용할 수있는 생성자 수 있습니다 : 당신 그래서 예를 들면

public enum Fruit { 

    APPLE("Green"), 
    BANANA("Yellow"); 

    private final String colourDescription; 

    Fruit(String colourDescription) { 
     this.colourDescription = colourDescription; 
    } 

    public String getColourDescription() { 
     return colourDescription; 
    }   
} 

를, 그것은 어떤 추가 정보가없는 것이 가장, 또는 수 위와 같이 생성자를 만들고 그런 식으로 숫자를 전달하십시오.

+1

어떻게하면 1 대신 값 2로 시작합니까 ?? – Jony

+0

@Codenotguru 'ordinal()'을 사용하여 사용할 수 없습니다 -이 경우 생성자를 사용하는 것이 좋습니다. –

+0

개인 생성자? 자바 열거 형 모두가 기본 액세스를 원한다고 생각했습니다. (즉,'Fruit (...) {') 대신'Fruit (...) {'. –

2

식별자에 -을 사용할 수 없습니다. 대신 MPEG_2을 사용하십시오. 또한 Java에서 = [number] 구문이 올바르지 않다고 생각합니다.

1

"-"가 식별자에서 유효하지 않은 문자이기 때문에 유효하지 않습니다. MPEG-2 대신 MPEG_2를 사용하면 문제가 해결됩니다.