2011-03-07 117 views
0

因此,如果我們有一個像枚舉:枚舉時間問題

public enum light { red, yellow, green } 

會是什麼時間?難道光線不是某種顏色?

int duration = ligt.red = 1 

或類似的東西?

+0

你能描述一下你想表示的數據,而不是你想表示的結構嗎?如果您告訴我們關於數據/任務的更多信息,我們可能會更好地協助您。 – 2011-03-07 22:58:49

+4

很難弄清楚你究竟在問什麼 - 你沒有給出任何關於問題的背景,所以我們不知道什麼時間*應該比你多。 – 2011-03-07 22:59:32

回答

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'最終。 – 2011-03-07 23:13:49

+0

@Steve Kuo - 我不這麼認爲,爲什麼? – adarshr 2011-03-07 23:16:15

+5

因此,稍後有些白癡不會出現,並添加一個'setDuration()'。枚舉應該通常是不可變的。 – ILMTitan 2011-03-07 23:23:11

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); 
     .... 
    } 
}