【发布时间】:2021-05-28 12:05:05
【问题描述】:
class A<T>
{
class InnerA<U>
{}
}
public class Main
{
public static void main(String[] args)
{
A<Integer>.InnerA<String> var = new A<>().new InnerA<>();
}
}
当上面的代码 sn-p 被编译时,它会导致编译时错误说“不兼容的类型:无法推断 A.InnerA<> 的类型参数。在我看来,编译器应该能够推断出类型是InnerA<String>.
为什么它不能这样做?如果有人能解释它是如何在幕后工作的,那将会很有帮助。
【问题讨论】:
-
这是 JAVA / JVM AFAIR 的限制:无法连续干扰两个泛型类型。您需要明确设置右侧的类型
标签: java generics language-lawyer type-inference inner-classes