首页 > 编程 > Java > 正文

Java学习-枚举

2019-11-06 06:58:15
字体:
来源:转载
供稿:网友

枚举,感觉搞的有点混乱,不太好理解。

要好使的话,最好还是按照最基础的功能使用,不要搞什么叽歪了。

否则得把人搅浑了去。

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);最不明白的就是,既然是类,不能实例化,但又可以有变量可以引用,这太诡异了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表