为什么在实例化通用外部类(与内部类一起)时使用菱形运算符会在片段 2 中产生错误,而片段 1 则完全没问题?
我知道稀有类型是被禁止的,但我的情况不是稀有类型——在稀有类型中,外部和内部都是通用的,但其中一个(任何一个)用作原始类型,另一个用作通用类型。
片段1:
class Outer {
class Inner<T> {
}
}
class Driver {
public static void main(String[] args) {
Outer.Inner obj1 = new Outer().new Inner<>(); // fine !
Outer.Inner<String> obj2 = new Outer().new Inner<>(); // fine !
}
}
片段 2:
class Outer<T> {
class Inner {
}
}
class Driver {
public static void main(String[] args) {
Outer.Inner obj1 = new Outer<>().new Inner(); // fine !
Outer<String>.Inner obj2 = new Outer<>().new Inner(); // error !
}
}
PS 在 Eclipse 编译器上测试。