【发布时间】:2013-12-07 16:11:12
【问题描述】:
首先,我意识到我可以将ProblemClass 设为非泛型类并且不会收到编译器错误。我想知道这个错误是什么意思。我的代码很简单,一个带有两个私有内部类的泛型类。外部类有一个InnerClass<E> 类型的实例变量,而内部类ProblemClass<E> 也有一个InnerClass<E> 类型的实例变量。当ProblemClass`被实例化时,它所做的只是设置o = a,其中o,a分别是外部类和内部类的实例变量。
public class SuperClass<E> {
private class InnerClass<E> {
}
private class ProblemClass<E> {
private InnerClass<E> o;
public ProblemClass() {
o = a;
}
}
private InnerClass<E> a;
}
我收到以下错误。
SuperClass.java:11: error: incompatible types
o = a;
^
required: SuperClass<E#1>.InnerClass<E#2>
found: SuperClass<E#1>.InnerClass<E#1>
where E#1,E#2 are type-variables:
E#1 extends Object declared in class SuperClass
E#2 extends Object declared in class SuperClass.ProblemClass
1 error
我的问题是,这个错误是什么意思?
【问题讨论】:
-
顺便说一句,这不是超类。
-
糟糕,我想 OuterClass 应该是一个更合适的名称。
标签: java generics inner-classes