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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

宋伟

黑马帝

  • 黑马币:0

  • 帖子:8

  • 精华:0

© 宋伟 黑马帝   /  2011-11-21 16:07  /  2497 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋伟 于 2011-11-21 16:52 编辑

谁能帮助解释下,枚举的构造方法为什么要设置成private的?

4 个回复

倒序浏览
强子 黑马帝 2011-11-21 16:09:55
沙发
构造器只能私有private,绝对不允许有public构造器。这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为枚举值是public static final的常量。 但枚举类的方法和数据域可以允许外部访问。
回复 使用道具 举报
张晨 黑马帝 2011-11-21 16:16:55
藤椅
所谓枚举,就是多个常量的集合,枚举常量都定在枚举类中,所以你不能创建多个副本的枚举常量,构造器用private保证枚举类不能被实例化,保证唯一性。
回复 使用道具 举报
崔浩 黑马帝 2011-11-21 16:19:15
板凳
先明确定义枚举类的原因,一个类的对象是有限而且固定的,也就是说通过这个枚举类,只能创建出你想要的对象,所以必须在你的枚举类里面,先创建出,你的枚举类的对象,因为创建枚举类对象只能在枚举里面(否则别人可以任意创建对象了,所以jvm强制要求你定义枚举类的构造函数必须私有化),所以要把枚举类的构造函数私有话,不然就失去了枚举类存在的意义了
回复 使用道具 举报
这是由你的需求决定的。在使用枚举的场合不需要创建新的实例。需要创建新实例的场合不需要用枚举。
枚举只能创建数量确定的实例,如果你写程序时需要的是对象数量确定的类,那你把这个类定义成枚举可以提高可读性和效率。
如果枚举拥有public构造方法,那就意味着任何使用这个枚举的程序都可以new出对象,那枚举就失去了存在的意义,你根本就不用写枚举,直接写一个普通的类就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马