Java7交集类型:规范具体说明了什么?
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.9
对于每个Ti(1≤ 我≤ n) ,设Ci为最具体的类或数组类型,以便Ti<;:Ci。那么一定有一些Tk<;:Ck以至于Ck<;:任何i(1)的Ci≤ 我≤ n) ,或发生编译时错误
一个人≤ J≤ n、 如果Tj是一个类型变量,那么让Tj'是一个接口,其成员与Tj的公共成员相同;否则,如果Tj是一个接口,那么就让Tj'成为Tj
那么交集类型的成员与类类型(§8)的成员相同,类类型有空体、直接超类Ck和直接超接口T1’。。。,Tn’,在交叉点类型出现的同一个包中声明
我本以为以下代码会导致编译时错误,但事实并非如此:
public interface I1 {}
public interface J1 extends I1 {}
public interface J2 {}
public interface J3 extends J2 {}
class C implements J1, J3 {}
public class A<T extends J1 & J3> {
public static void main(String[] args) {
A<C> a = new A<>();
}
}
据我所知,Ti<;:Ci类型如下:
- J1<;:I1
- J3<;:J2
现在,我需要一个Tk<;:Ck,其中Ck<;:C1和Ck<;:C2,但如果Ck:=C1,那么I1<;:J2为假,如果Ck:=C2,则J2<;:I1是假的
我错过了什么
共 (0) 个答案