与 &-运算符和顺序的泛型歧义
我有一个奇怪的Java泛型歧义行为,我无法解释:
类中的这3种方法:
public static <E extends ClassA & ClassB> void method(E val) {}
public static <E extends ClassC & ClassB & ClassA> void method(E val) {}
public static <E extends ClassB> void method(E val) {}
编译正常。
但那些不是(歧义违规):
public static <E extends ClassA & ClassB> void method(E val) {}
public static <E extends ClassB & ClassC & ClassA> void method(E val) {}
public static <E extends ClassB> void method(E val) {}
(A类,B类,类C都是完全独立的接口!