Java中的枚举,构造器为啥只能是private?

枚举

1.是一组由固定常量组成的类型
2.使用enum定义

public enum Sex  {,}

枚举其实就是一种类型,是java.lang.Enum类的子类,继承了Enum类的许多方法
这里定义T就是Enum的子类


枚举的好处

1.易于维护,类型安全
2.易于输入
3.代码清晰


枚举的构造函数

protected Enum(String name, int ordinal)
唯一的构造函数。 程序员无法调用此构造函数。 它由编译器响应枚举类型声明发出的代码使用
name:
返回此枚举常量的名称
大多数程序员应该使用toString()方法,因为toString方法可能会返回一个更加用户友好的名称
ordinal:
这个枚举常数的序数(它在枚举声明中的位置,其中初始常数被分配为零的序数)
大多数程序员将不会使用这种方法。 它被设计为使用复杂的基于枚举的数据结构,如EnumSet和EnumMap


枚举的子类的构造方法

构造方法不能被继承,枚举的构造方法也不能被调用
所以子类显示定义其构造方法,且默认为private,这是因为,枚举被设计成是单例模式,即枚举类型会由JVM在加载的时候,实例化枚举对象,你在枚举类中定义了多少个就会实例化多少个,JVM为了保证每一个枚举类元素的唯一实例,是不会允许外部进行new的,所以会把构造函数设计成private,防止用户生成实例,破坏唯一性。

//Sex是Enum的子类
public enum Sex {("man",1),("woman",2);
    //构造方法,默认为private
    Sex (String name,int i){
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值