2012-06-15 3 views
0

나는 내가 이해하려고 노력하고 다음 코드가 있습니다 다른 방법으로 자바 열거 형을 만들 수 있습니까?

public class A {  
    enum Size {S, M, L }; 
    Size size = Size.M; 
} 

는 내가 처음 열거 라인은 세 개의 값을 열거를 생성되지만 두 번째 줄은 무엇을하고 이해를? 가변 크기는 무엇을 유지하며 열거 형을 구성하는 또 다른 방법입니까?

+0

크기라는 enum과 S, M 및 L이라는 열거 형의 세 인스턴스가 있습니다. 두 번째 줄 다음에 'size'는 M이라는 크기 열거 형의 인스턴스를 포함합니다. – sjr

답변

6

두 번째 줄은 클래스 A 인스턴스의 size (유형 Size) 필드에 초기 값 Size.M을 부여하는 것입니다.

열거 형이 A 클래스 내부에서 생성 되었기 때문에 약간 방해가 될 수 있습니다.이 파일은 다른 파일에있을 수 있습니다 (단, 클래스 A에서만 사용하면 클래스 A 안에 넣어도 괜찮습니다).

public enum QueryError { 

    no_request("no_request", "No request in client call"), 
    no_alias_requested("no_alias_requested", "no alias requested"), 
    session_not_found("session_not_found", "wrong session id"), 
    synosteelQuery_not_found("sxxx_not_found", "sxxx not found"); 

    public JsonpServerResponse.Error error; 

    private QueryError(String type, String details) { 
     this.error = new JsonpServerResponse.Error(); 
     this.error.type = type; 
     this.error.detail = details; 
    } 
} 
+0

크기는 열거 형이 아닌 열거 형입니다 . – Alan2

+1

아니요, size는 Size 유형의 참조 이름입니다.이 이름은 위에 정의 된 enum 일 수 있습니다. – duffymo

+1

@Gemma :'size' (소문자)는 enum 유형의 필드입니다. – Boann

0

두 번째 같은 :


EDIT (답의 정말 일부) : 당신은 더 나은 열거 선언의 형태를 이해할 수 있도록 여기에 열거 선언의 (꽤되지 않음) exemple의 클래스 ASize 유형의 패키지 전용 멤버 변수를 선언하고 Size.M을 가리 키도록 초기화하고 있습니다.

0

enum은 유형 (클래스가 유형 인 것처럼)입니다. 두 번째 줄은 크기라는 유형을 가진 size라는 인스턴스 변수를 생성합니다 (열거 형이므로). 그런 다음 인스턴스 변수의 값을 enum Size 인스턴스 (특히 Size.M 인스턴스)의 인스턴스로 초기화합니다.

+0

그래서 열거 형을 초기화하기 위해 중괄호를 사용할 필요가 없습니까? – Alan2

+0

중괄호는 열거 형의 * 정의 *에 사용됩니다. 즉, 그것이 보유 할 수있는 가능한 값은 무엇이며, 그 값 인스턴스에서 실행될 수있는 메소드도 있습니다. 2 행은 열거 형의 정의가 아닙니다. 이것은 특정 인스턴스 (라인 1에서 정의 됨)를 변수에 할당 한 것입니다. –

관련 문제