枚举,感觉搞的有点混乱,不太好理解。
要好使的话,最好还是按照最基础的功能使用,不要搞什么叽歪了。
否则得把人搅浑了去。
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);最不明白的就是,既然是类,不能实例化,但又可以有变量可以引用,这太诡异了。
新闻热点
疑难解答