根据Java语言规范,交集类型的类型是什么?
在我的问题中,我提到了第三版中的Java语言规范。根据交叉点类型规范(§4.9),交叉点类型根据Java语言规范,交集类型的类型是什么?,java,jls,Java,Jls,在我的问题中,我提到了第三版中的Java语言规范。根据交叉点类型规范(§4.9),交叉点类型int[](或int[]&int[])的成员将与具有空主体和直接超类int[]的类类型相同。但按照我对规范的理解,类类型可能没有数组类型作为超级类型,因为§8说明: 除对象外的每个类都是单个现有类(§8.1.4)的扩展(即子类),可以实现接口(§8.1.5) 我是理解错误还是规范中存在不一致?两个int[]和long[]都是对象,因此它们的交集也是对象。此外,具有空主体的类就是这样一个类:公共类empty
int[]
(或int[]&int[]
)的成员将与具有空主体和直接超类int[]
的类类型相同。但按照我对规范的理解,类类型可能没有数组类型作为超级类型,因为§8说明:
除对象外的每个类都是单个现有类(§8.1.4)的扩展(即子类),可以实现接口(§8.1.5)
我是理解错误还是规范中存在不一致?两个
int[]
和long[]
都是对象,因此它们的交集也是对象。此外,具有空主体的类就是这样一个类:公共类empty{}
,它仍然隐式扩展对象。§4.9说明,对于交集类型int[]&long[]
:“那么交集类型与具有空主体的类类型(§8)具有相同的成员”是什么让你认为这个主体为空的类类型不会扩展另一个类?§4.9告诉你,对于交集类型int[]&long[]
的所有类型Ti,确定了最具体的类或数组类型Ci,它是Ti的超类型。此后,确定最具体的Ci(Ck)。Ck则是具有空主体的类的超类型。在给定的示例中,这个Ck是int[]
,不是吗?那么是否存在扩展数组类型的类类型?long[]
不扩展int[]
,因此不存在。