所以根据java docs
所有枚举都隐式扩展了java.lang.Enum。因为类只能扩展一个父类,所以Java语言不支持多重继承状态,因此枚举不能扩展其他内容。
但在java中我们也知道: -
Java中的所有类都隐式地扩展了java.lang.Object类
但我们显然可以在java中扩展Classes。由于我们扩展的类本身是从Object
扩展的(因此它不会导致多重继承,或者将其声明为: - 如果不扩展Object
的任何其他类扩展,则从类{{ 1}}从XYZ
)延伸
对于Enums无法扩展其他类/枚举等事实,java文档的解释是否不正确?
我错过了一些愚蠢的观点吗?
答案 0 :(得分:5)
这只是意味着你不能让你的枚举扩展到隐式扩展Enum
以外的任何其他内容。
当它说Java不允许扩展多个类时,就意味着你不能拥有
.--------. .----------.
| Enum | | YourBase |
'--------' '----------'
^ ^
\ /
\ /
.----------.
| YourEnum |
'----------'
另一方面,这完全没问题:
.--------.
| Object |
'--------'
^
|
.--------.
| Enum |
'--------'
^
|
.----------.
| YourEnum |
'----------'
当文档说
时Java中的所有类都隐式地扩展了java.lang.Object类
它只是意味着每个类可以直接扩展Object,也可以通过它的超类来间接扩展。
答案 1 :(得分:1)
运行此代码,您将得到答案:
System.out.println(MyEnum.class.getSuperclass());
System.out.println(MyEnum.class.getSuperclass().getSuperclass());
public enum MyEnum {
}
输出:
class java.lang.Enum
class java.lang.Object
最重要的是考虑Java中不允许多重继承。即MyEnum
已扩展Enum
,而Enum
已扩展Object
。这条链中没有任何其他扩展空间。