【发布时间】:2012-01-03 11:59:17
【问题描述】:
所以我有如下内容:
public class Enclosing<T extends Comparable<T>> {
// non-relevant code snipped
public class Inner {
private T value;
public Inner(T t) {
value = t;
}
}
}
一切都会编译,世界很快乐。但是,每当我尝试如下创建Enclosing.Inner 的实例时,我都不能:
new Enclosing<Integer>.Inner(5);
出现以下错误:
无法使用参数化的复合名称分配成员类型
Enclosing<Integer>.Inner;使用它的简单名称和Enclosing<Integer>类型的封闭实例。
需要注意的是,我无法创建内部类static,因为它包含T 类型的字段。
我该如何解决这个问题?
【问题讨论】:
-
Re:“重要的是要注意,我不能创建内部类
static,因为它包含T类型的字段”:这听起来更像是创建内部类的原因通用的,使用与外部类相同的边界,而不是使内部类成为非静态的原因。 (并不是说你的内部类应该是静态的。这取决于你的整体设计,而不是这个细节。)
标签: java generics instantiation inner-classes