【发布时间】:2014-10-19 14:16:11
【问题描述】:
package generics;
public class InnerClassGenerics{
class Innerclasss{
}
public static void main(String[] args) {
InnerClassGenerics icg=new InnerClassGenerics();
Innerclasss innerclass=icg.new Innerclasss();
}
}
上面的代码是可能的并且编译得很好!!!
为什么下面的代码无法编译,是否可以对内部类进行参数化?
package generics;
public class InnerClassGenerics<T>{
class Innerclasss<T>{
}
public static void main(String[] args) {
InnerClassGenerics<String> icg=new InnerClassGenerics<>();
Innerclasss<String> innerclass=new Innerclasss<>();
}
}
在上面的代码中,如果类是静态的,它就可以正常工作!!! 为什么没有 static 关键字就不行?
【问题讨论】:
-
这与泛型无关,只是说。
-
您在内部类中的类型参数
<T>对外部类隐藏了<T>。无论如何,您应该更正您的示例(您正在尝试突然创建非静态内部类,而不使用外部类的任何实例)。 -
只需将
Innerclasss<String> innerclass=new Innerclasss<>();更改为InnerClassGenerics<String>.Innerclasss<String> innerclass=icg.new Innerclasss<String>();。 -
@Tom 这很好用!!
标签: java generics inner-classes