2011-03-10 77 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頂層。