Java Enum类是否默认继承Java Object类?
Java Enum类是否继承Object类解答
核心结论:java.lang.Enum类默认继承java.lang.Object类,所有自定义枚举的最终根父类都是Object。
- Java语言规范明确,除
Object类本身外,所有类的继承链向上溯源最终都会到达Object,Enum作为Java标准库的类也遵循这个规则。 - 自定义枚举的直接父类是编译器隐式指定的
java.lang.Enum,开发者不能手动为枚举类指定其他父类,因此你定义的ORDER枚举的完整继承链为:ORDER -> java.lang.Enum -> java.lang.Object。
你提供的枚举示例代码如下:
enum ORDER { FIRST, SECOND, THIRD, FOURTH }
你可以通过反射打印类继承链的方式直接验证结论,参考验证代码:
public class EnumCheck { public static void main(String[] args) { // 验证枚举实例是Object的实例 System.out.println(ORDER.FIRST instanceof Object); // 输出true // 逐层打印父类 Class<?> clz = ORDER.class; while (clz != null) { System.out.println(clz.getName()); clz = clz.getSuperclass(); } /* 输出顺序: * ORDER * java.lang.Enum * java.lang.Object */ } }
补充说明:Enum类重写了Object类的
equals()、hashCode()、toString()方法,其中equals()直接通过==判断对象相等,保证枚举单例特性不被破坏。普通自定义枚举类默认被final修饰,不允许被其他类继承。
内容的提问来源于stack exchange,提问作者shamanth gowda
相关产品推荐
相关产品推荐

