2011-03-07 111 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); 
     .... 
    } 
}