2012-04-07 6 views
2

는 I가되도록 열거를 만들었다 :Java Access Enum 특정 메소드?

enum Types { hi, hello, bye } 

내가되도록 각 ENUM 내부에 게터를 추가 :

enum Types { 
    hi { 
     String test = "From hi"; 
     public String getString() { 
     return test; 
    }, 
    etc. 
} 

I 호출 수를 제외하고 "Types.hi.getString()". 이 일을 할 수있는 방법이 있습니까? 감사!

+1

코드가 누락 된 것 같습니다. –

답변

8

enum 클래스에서 액세스하려는 메서드를 public abstract으로 정의하십시오. 그래서 같이

: 대안으로

enum Types { 
     hi { 
     public String getString() { 
      return "From hi"; 
     } 
     }; 

     public abstract String getString(); 
    } 

, 당신의 열거 클래스가 인터페이스를 구현하자 : 당신은 정확히 바로 그 일을하지 않을

public interface StringProvider { 
    String getString(); 
} 

public enum Types implements StringProvider { 
    ... 
} 
+0

트릭을 수행해 주셔서 감사합니다! – MrDrProfessorTyler

0

.
Sun에는 열거 형에 메서드 및 필드를 포함시키는 방법에 관한 문서가 있습니다. 여기 it입니다.

+0

기본적으로 Urs가 말한 내용 –

0

메소드 및 입력란 선언은 열거 형 (예 : Types) 내에 있어야합니다. 안녕, 안녕, 안녕하세요는 유형의 인스턴스입니다.