java枚举

  1. 枚举必须用private构造,如没有无参构造,手动调构造参数传参

Enum类中为什么构造函数必须是私有的
枚举被设计成是单例模式,即枚举类型会由JVM在加载的时候,实例化枚举对象,你在枚举类中定义了多少个就会实例化多少个,JVM为了保证每一个枚举类元素的唯一实例,是不会允许外部进行new的,所以会把构造函数设计成private,防止用户生成实例,破坏唯一性。

  1. 枚举对象必须放在首行,随后定义属性、构造、普通方法等结构

  2. JDK1.5可以在switch表达式中使用Enum定义的枚举类的对象作为表达式,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定

enum CCC {
    MAN("男",1),
    WOMEN("女",2);

    private CCC(String name, int code ) {
        this.name = name;
        this.code = code;
    }
    String name;
    int code;
}
  1. 枚举不是引用类型,是值传递
enum CCC {
    MAN("男", 1),
    WOMEN("女", 2);

    private CCC(String name, int code) {
        this.name = name;
        this.code = code;
    }

    String name;
    int code;
}

public class Test {
    public static void main(String[] args) {
        CCC c1 = CCC.MAN;
        System.out.println("before " + c1);
        change(c1);
        System.out.println("after " + c1);
    }

    private static void change(CCC c) {
        c = CCC.WOMEN;
        System.out.println("middle " + c);
    }
}
before MAN
middle WOMEN
after MAN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值