黑马程序员技术交流社区

标题: 枚举问题(问题已解决,谢谢各位) [打印本页]

作者: 戎石锁    时间: 2012-8-21 16:28
标题: 枚举问题(问题已解决,谢谢各位)
本帖最后由 戎石锁 于 2012-8-21 22:21 编辑


public class EnumTest {

        public static void main(String[] args){
                WeekDay sunday = WeekDay.SUN;
                sunday.info();
        }
        
        public enum WeekDay{
                MON,Tue,WED,THU,Fri,AST,SUN;
               
                private WeekDay(){
                        System.out.println("调用WeekDay枚举类的构造方法");
                }
               
                private void info(){
                        System.out.println("调用WeekDay枚举类的info()方法");
                }
        }
}
***********运行结果************************
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的构造方法
调用WeekDay枚举类的info()方法


****************************************
我的问题是我只在main方法里面调用SUN这一个对象。为什么枚举类里所有的对象都创建了一遍啊!!?都创建了一遍有点浪费资源吧!!
作者: 刘芮铭    时间: 2012-8-21 16:58
enum本身实质上也是一个类,所以在编译器装载时,它并不知道你要初始化的是什么,所以他会将所有的枚举元素都初始化,并不是说到了你用那个元素,编译器才会初始化那个相应的元素值
作者: 王少岩    时间: 2012-8-21 17:37
MON,Tue,WED,THU,Fri,AST,SUN都是WeekDay类的实例,或者可以是WeekDay类的派生类实例,它们在实例化的时候都要调用WeekDay的构造方法,所以会出现像楼主所说的“枚举类里所有的对象都创建了一遍”。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2