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){
     
    }
}

你可能感兴趣的:(笔记,java)