前面讲了下枚举,今天看公司以前一个项目,刚开始就来个枚举,看来不搞懂,没办法了,
先看实例一:
我定义了一个枚举,创建了一个私有的构造函数,报错了,报错日记:
Illegal modifier for the enum constant EnumDemo; no modifier is allowed
意思是说:非法的枚举常量修饰符EnumDemo;没有修饰符是被允许的,也就是说删除 修饰符private是可以的,但是我不要这么删除,还有什么好的办法,等下我会模拟此情况并解释为什么会报错
现在再写个枚举类
public enum EnumDemo {
a,b,c;
private EnumDemo(){
System.out.println("haha");
}
}
TestEnum.java
public class TestEnum {
public static void main(String[] args) {
System.out.println(EnumDemo.a);
}
}
打印结果:
haha
haha
haha
a
通过结果我们发现,我就是想打印a的值 按正常来讲就应该会打印一次haha结果它打印了三次,我们猜想枚举中定义了三个变量,是不是每一个变量都去调用一次构造函数,那么刚好和我们的结果是一致的,
因为没有源码可查,只好自己去摸索了,枚举的特点
1:函数一定是私有的,也就是说这个类不能再其他类中创建对象,
2:枚举中必需有常量,否则构造函数不能创建
3:枚举中可以有静态方法
4:枚举中可以有成员变量
下面通过例子演示:
public class EnumTest {
public static final EnumTest a = new EnumTest();
public static final EnumTest b = new EnumTest();
public static final EnumTest c = new EnumTest();
int num = 10;
private EnumTest(){
System.out.println("haha");
}
public static void print(){
System.out.println("枚举");
}
}
其中a,b,c就是模拟枚举的
一般在定义某一个常量的取值只能在规定的范围之内可以用枚举 最好