Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Java语言规范,交集类型的类型是什么?_Java_Jls - Fatal编程技术网

根据Java语言规范,交集类型的类型是什么?

根据Java语言规范,交集类型的类型是什么?,java,jls,Java,Jls,在我的问题中,我提到了第三版中的Java语言规范。根据交叉点类型规范(§4.9),交叉点类型int[](或int[]&int[])的成员将与具有空主体和直接超类int[]的类类型相同。但按照我对规范的理解,类类型可能没有数组类型作为超级类型,因为§8说明: 除对象外的每个类都是单个现有类(§8.1.4)的扩展(即子类),可以实现接口(§8.1.5) 我是理解错误还是规范中存在不一致?两个int[]和long[]都是对象,因此它们的交集也是对象。此外,具有空主体的类就是这样一个类:公共类empty

在我的问题中,我提到了第三版中的Java语言规范。根据交叉点类型规范(§4.9),交叉点类型
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[]
,因此不存在。