Java枚举类是否默认扩展Java对象类?



我已经定义了自己的enum,它将扩展Java enum class。Java枚举类扩展Java对象类吗?

enum ORDER {
FIRST,
SECOND,
THIRD,
FOURTH
}

是的,在java中任何非null都是Object实例的引用。换句话说

aRef instanceof Object 

true,除非aRefnull,无论aRef类型是enum或常规类

实际上,enum关键字定义了一个类(称为enum类型)。枚举类主体可以包含方法和其他字段。编译器在创建枚举时自动添加一些特殊的方法。https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

因此,枚举类型的引用具有与其他"常规"类型相同的基本属性。对象。

因此,你可以这样调用:

ORDER obj = ORDER.FIRST;
System.out.println(obj.hashCode());
System.out.println(obj.equals(otherObj));

的方法与使用非enum类的对象相同。

是。一个简单的单元测试可以证明你的例子中的类层次结构是ORDER ->java.lang.Enum→java . lang . object:

public class EnumTest {
enum ORDER {
FIRST,
SECOND,
THIRD,
FOURTH
}
@Test
public void test() {

System.out.println(ORDER.class.getSuperclass().getSuperclass());

}
}

返回

-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running de.interassurance.service.EnumTest
class java.lang.Object
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s - in de.interassurance.service.EnumTest
Results:
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

最新更新