A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏兴发 黑马帝   /  2011-10-20 09:25  /  2458 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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这一个对象。为什么枚举类里所有的对象都创建了一遍啊!!?都创建了一遍有点浪费资源吧!!

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
黑马谢承强 + 1 + 2

查看全部评分

4 个回复

倒序浏览
编译之后产生了字节码,加载到内存后运行才产生对象
回复 使用道具 举报
潇洒人生1988123 发表于 2011-10-20 09:33
产生了对象必然调用了构造函数,枚举里的每个元素都是一个对象,所以会调用七次构造函数,与main方法调用无 ...

也就是说只要枚举类编译了,在内存中就有了这七个对象。可以这样理解吗??
回复 使用道具 举报
郭敏 黑马帝 2011-10-20 09:48:33
板凳
首先, 枚举中的每一元素都是该枚举的一个对象,枚举加载时,将会对该枚举中的对象实例化,枚举中的对象就等效于静态成员变量。所在在执行里次调用该枚举的构造方法,
详细说明请看 张孝祥_Java基础加强_枚举的作用介绍.
回复 使用道具 举报
产生了对象必然调用了构造函数,枚举里的每个元素都是一个对象,所以会调用七次构造函数,与main方法调用无关
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马