2011-03-10 42 views
3

无论如何要把这个测试放在单独的类中吗?我尝试过但没有成功。在单独的类中枚举

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()); 
      } 
     } 
    } 
} 
+2

你是如何试图将它们分开并失败的?你可以在自己的类文件中有一个'enum'。 – birryree 2011-03-10 16:13:51

回答

2

你需要把它放在不同的.java文件本身。在一个.java文件中不能有多个public class/enum。

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; 
    } 
} 
13

我不知道我理解你在你的问题是什么意思,所以我就回答什么,我想你你问。

枚举可以是它自己的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; 
    } 
} 

然后,您可以从您的测试项目(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()); 
     } 
    } 
} 
0

假设你的问题是:“如何在不同的源文件得到nested enum?”

这将是可能的部分类,但是这个isn't supported in java

+0

似乎我误解了这个问题,我没有看到答案出了什么问题。 – 2011-03-10 16:25:01

+0

这个问题不是特别清楚...... – 2011-03-10 16:33:56

+0

@Tom Hawtin:似乎其他答案只是忽略了它是一个嵌套枚举的事实。我认为这是一个问题,如何在一个不同的源文件中获得嵌套的枚举。 – 2011-03-10 16:35:47

1

当然,但您需要限定枚举类的名称。 TrafficLightprj.TrafficLight而不是TrafficLight。或者,我猜,导入它。

我不是非私人嵌套类的粉丝,并建议使用enum顶层。