Java学习-枚举

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

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

否则得把人搅浑了去。

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);

最不明白的就是,既然是类,不能实例化,但又可以有变量可以引用,这太诡异了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值