枚举在单独的课堂上

时间:2011-03-10 16:12:14

标签: java enums

有没有把这个测试放在一个单独的课程中?我试过但没有成功。

public class TrafficLightprj 
{
    public enum TrafficLight 
    {  
        RED(1),  
        GREEN(2),  
        YELLOW(3);

        private final int duration; 

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

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


        public static void main(String[] args) 
        {
            for(TrafficLight light: TrafficLight.values())
            {
               System.out.println("The traffic light value is: " +light);
               System.out.println("The duration of that trafic light value is: " + light.getDuration());
            }
        }   
    }
}

4 个答案:

答案 0 :(得分:13)

我不确定我在你的问题中理解你的意思,所以我会回答你所想的想法

枚举可以是Java中自己的文件。例如,您可以拥有一个名为 TrafficLight 的文件,其内部是:

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

    private final int duration; 

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

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

然后,您可以在测试项目中使用此枚举( TrafficLightPrj.java )。像这样:

public class TrafficLightprj {

    public static void main(String[] args) {
        for(TrafficLight light: TrafficLight.values()) {
            System.out.println("The traffic light value is: " +light);
            System.out.println("The duration of that trafic light value is: " +light.getDuration());
        }
    }
}

答案 1 :(得分:2)

您需要将其放在不同的.java文件中。在单个.java文件中不能有多个公共类/枚举。

<强> TrafficLightprj.java

public class TrafficLightprj {

    public static void main(String[] args) {
        for(TrafficLight light: TrafficLight.values()){
            System.out.println("The traffic light value is: " +light);
            System.out.println("The duration of that trafic light value is: "  +light.getDuration());
        }
    }
}

<强> TrafficLight.java

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

    private final int duration; 

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

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

答案 2 :(得分:1)

当然,但您需要限定枚举类名称。 TrafficLightprj.TrafficLight代替TrafficLight。或者,我想,导入它。

我不是非私有嵌套类的忠实粉丝,并建议将枚举设为顶级。

答案 3 :(得分:0)

假设您的问题是:“如何在不同的源文件中获取nested enum?”

这可以用于部分类,但是isn't supported in java