你在创建枚举时,编译器为你生成了一个类,该类继承自java.lang.Enum。
所以,Enum.class的值是class java.lang.Enum,即系统的枚举类,这个类首先是没有空参数的构造器的,
以下取自JDK 1.6的源码:
这个是枚举类的构造器,
protected Enum(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
上面的注释“ Sole constructor. Programmers cannot invoke this constructor.”
这句话的意思是,唯一的构造器,程序员不能获取这个构造器。
invoke这个词,你应该很熟悉了,是反射里很重要的方法。
枚举的“构造器”是为了给有参数的枚举值赋值用的,它和一般类的构造器是有区别的,枚举类是无法创建对象的,也是不能从枚举继承子类的,所以,枚举类所谓的“构造器”其实不是一般意义的构造器。 |