2008-09-21 4 views
4

에 대한 인터페이스를 구축 I 다음 열거 있습니다방법 등 열거

public enum Status implements StringEnum{ 

    ONLINE("on"),OFFLINE("off"); 

    private String status = null; 

    private Status(String status) { 
     this.status = status; 
    } 

    public String toString() { 
     return this.status; 
    } 

    public static Status find(String value) { 
     for(Status status : Status.values()) { 
      if(status.toString().equals(value)) { 
       return status; 
      } 
     } 

     throw new IllegalArgumentException("Unknown value: " + value); 

    } 
} 

는) 모든 열거 형 (발견했다 확인하기 위해 StringEnum 인터페이스를 구축 할 수 있나요 toString()와 생성자?

감사합니다.

답변

6

인터페이스에서 생성자 또는 정적 메서드를 지정할 수 없습니다. 좋은 간결한 설명은이 문서 체크 아웃 : No static methods in interfaces

3
  1. 정적 메서드는 인터페이스를 필요로
  2. 생성자는
  3. toStringjava.lang.Object에 정의 된 인터페이스로 정의 할 수없는 인터페이스에 정의 할 수 없습니다 것입니다 메소드가 정의되지 않으면 컴파일 오류가 발생하지 않습니다.

어쨌든 왜 생성자를 적용 하시겠습니까? 어쨌든 런타임에 enum 초의 새 인스턴스를 만들 수 없습니다 (일부 반사 메커니즘을 사용하지 않는 한).

4

Enum에는 이미 valueOf() (사용자의 find 메소드) 메소드가 있습니다. 그리고 "toString()"은 java.lang.Object 메쏘드입니다. 그래서 모든 클래스는 그것을 가질 것입니다. 즉, 당신은 그것을 강제 할 수 없습니다! 서로 다른 열거 형이 서로 다른 초기화를 가질 수 있으므로 생성자를 적용하는 가치를 알 수 없습니다.

친절 도와서

관련 문제