枚舉,感覺搞的有點混亂,不太好理解。
要好使的話,最好還是按照最基礎的功能使用,不要搞什么嘰歪了。
否則得把人攪渾了去。
package mypackage;//在java中,枚舉其實也是一個類//所有的枚舉類型,都是Enum的子類,只是不需要顯示extends,就好比所有的類都是Object的子類一樣public enum Size{ //類中都是類的實例// Small,// Medium,// Large,//并且,枚舉值之間還是只能使用逗號來分隔 /*MoreLarge;*//*,如果枚舉類中沒有定義其它的東西,只有枚舉,用逗號不會報錯; 但要定義其它的時候,就得用分號了,難道表示上邊是一條執行語句? 可Java不是說沒有逗號語句唄!*/ Small(1), Medium(2), Large(3); //在枚舉類中可以定義實例域和方法、構造器 PRivate int m_iValue; private/*public*/ Size(int i)//枚舉的構造器只能是private,其它的都會報錯 {//需要注意的是,一旦定義了構造器,則枚舉實例即(Small、Medium、Large)就必須使用構造器進行實例化,否則會報錯 //并且,這幾個實例還必須得要放在枚舉定義的開頭,以分號;結束,否則也會報錯,不明白這個語法是為了什么? //既然是實例化,在哪不行,而且構造器還必須是private m_iValue = i; } public int getValue() { return m_iValue; } }在實際應用的時候,最詭異了:// Size size = new Size();//枚舉是不可以用來實例化的,編譯器會報錯 System.out.println(Size.Large);//這個的結果和下邊toString的結果是一樣的,莫非是默認實現了? System.out.println(Size.Large.toString()); System.out.println(Size.values());//values可以返回所有的枚舉,是個實例數組 //還可以設置枚舉的值,只不過是通過Enum的靜態方法 Size z = Enum.valueOf(Size.class, "Small");//這個就不是實例化了? System.out.println(z);最不明白的就是,既然是類,不能實例化,但又可以有變量可以引用,這太詭異了。
新聞熱點
疑難解答