解决方案 »

  1.   

    因為你是GREEN("1"), 所以你在建構的時候 你必須宣告有參數的建構  然後你宣告了一個 String 型別的變數  並在有參數的建構裡
    把該參數的值放在了value這個變數 然後你System.out.println(Single.GREEN.value);這句話 就會去取得你宣告的String value這個 變數裡面的值
      

  2.   

    你可以认为是这样的:public class Test { enum Single { GREEN("1"), YELLOW("2"), RED("3"); String value; Single(String s) {
    this.value = s;
    } } public static void main(String[] args) {
    System.out.println(Single.GREEN.value);
    System.out.println(Single1.GREEN.value);
    } public static class Single1 { public final String value; public static Single1 GREEN = new Single1("1");
    public static Single1 YELLOW = new Single1("2");
    public static Single1 RED = new Single1("3"); private Single1(String s) {
    this.value = s;
    }
    }}
      

  3.   

    我想可以这样理解,enum是一个特殊的类,而其中的元素就是这个类的实例,如果你的实例不带参数就像这样enum Single {  
        GREEN, 
        YELLOW, 
        RED; 
        String value;
        Single(){
         this.value="123";
        }
    }  那么你可以认为每个实例调用了默认的构造函数Single(),然后每个enum实例都拥有自己的value属性。如果带参的就是像你的代码那样,那么自然是一个道理,他们各自调用了自己的带参构造函数,每个enum实例都拥有自己的value属性