枚举是一个类,这个类和其他的类有什么区别呢,他可以列出很多对象,比如MON,TUE等等对象,它里面列出的是对象还是对象的引用呢?如果列出的是引用,具体的对象是那个?
下面这个例子输出结果有点不理解,为什么用了一次MON,输出 那么多次first
public class EnumTest {
public static void main(String[] args) {
System.out.println(WeekDay.MON);//这句话在执行的时候,会先将WeekDay类加载到内存中,
}
public enum WeekDay{
MON(1),TUE,WED,THU,FRI,SAT,SUN;
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
}
/*首先你要明白枚举的原理,
* 1.枚举一但被声明,那么枚举中元素的个数就是固定的,不会再发生改变。所以构造方法都必须被私有化。
* 2.枚举中的元素就是本类的实例对象。也就是说 MON(1),TUE,WED,THU,FRI,SAT,SUN;都是WeekDay的实例对象。
* 3.枚举一但被加载到内存,那么它的元素就会成存,会直接调用构造方法生成本类对象,
* 其中:MON(1) 调用的是 private WeekDay(int day) {System.out.println("second");}
* TUE,WED,THU,FRI,SAT,SUN 调用的是 private WeekDay(){System.out.println("first"); }
* 所以你的结果会先是second,然后6个first。 System.out.println(WeekDay.MON) 调用枚举toString()方法,
* 会输出枚举的名称WeekDay.MON。toString()的结果就是MON,
* 4.枚举的元素必须放在第一行,也就是默认的无参构造的前面。
* */
回答:它里面列出的是对象还是对象的引用呢?如果列出的是引用,具体的对象是那个?
如果是WeekDay.MON 就相当于是这样 WeekDay day= WeekDay.MON; 你应该明白了吧!
单例你懂吧,单例中只有一个对象,而枚举中可以有多个对象,如果枚举中只放一个对象,我们就可以把它当单例用了。
————希望对你有帮助—————— |