2011-03-07 3 views
0

우리가 같이 열거 그래서 경우 :열거 기간 질문

public enum light { red, yellow, green } 

무엇 기간이 될 것입니까? 그 빛이 어떤 색깔 인 때가 아닐까요? 그런

int duration = ligt.red = 1 

또는 뭔가처럼

?

+0

표현할 구조가 아닌 표현하려는 데이터를 설명해 주시겠습니까? 우리가 데이터/작업에 대해 더 많이 이야기하면 더 잘 도와 줄 수 있습니다. –

+4

당신이 정확히 무엇을 요구하고 있는지 파악하기는 어렵습니다. 문제의 상황에 관해 우리에게 아무 것도주지 않았기 때문에, 당신은 * duration *이 당신보다 더 많은 것을 알지 못합니다. –

답변

3

이처럼 열거를 선언 :

public enum Light { 
    RED(1), 
    YELLOW(2), 
    GREEN(3); 

    private final int duration; 

    Light(int duration) { 
     this.duration = duration; 
    } 

    public int getDuration() { 
     return this.duration; 
    } 
} 

그런 다음이처럼 사용할 수 있습니다

public class Test { 
    public static void main(String... args) { 
     Light light = Light.RED; 
     System.out.println("Duration of RED is: " + light.getDuration()); 
    } 
} 

이 편집 : 스티브 쿠오의 제안을 바탕으로이 변수 duration이 최종 제작되었습니다.

+2

'duration'을 final로 설정해야합니다. –

+0

@ 스티브 쿠오 - 그렇게 생각하지 않아요, 왜요? – adarshr

+5

그래서 어떤 바보는 나중에 오지 않고'setDuration()'을 추가합니다. 열거 형은 일반적으로 불변이어야합니다. – ILMTitan

0

Adarshr의 대답은 지속 시간이 빛의 색 속성이라고 가정합니다. 특정 신호 세트에서 색상의 속성 인 경우 EnumMap<light, Integer>을 사용할 수 있습니다.

class Signal { 
    private EnumMap<light, Integer> durations = new EnumMap<light, Integer>(light.class); 
    Signal() { 
     this.durations.put(light.red, 3); 
     .... 
    } 
}