- 枚举必须用private构造,如没有无参构造,手动调构造参数传参
Enum类中为什么构造函数必须是私有的
枚举被设计成是单例模式,即枚举类型会由JVM在加载的时候,实例化枚举对象,你在枚举类中定义了多少个就会实例化多少个,JVM为了保证每一个枚举类元素的唯一实例,是不会允许外部进行new的,所以会把构造函数设计成private,防止用户生成实例,破坏唯一性。
-
枚举对象必须放在首行,随后定义属性、构造、普通方法等结构
-
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;
}
- 枚举不是引用类型,是值传递
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