【发布时间】:2017-03-14 18:06:11
【问题描述】:
我正在尝试实例化一个公共的非静态内部类,但我不断收到编译错误。
我有 2 个类:一个树类和一个主类。
我最终试图实例化一个点数组,但为了这个问题,我试图只实例化一个 Point 对象。
编译错误表明
Point 无法解析为类型
我做错了什么?
树.java
public class Tree<T> {
public class Point<T> {
public T position[];
}
}
Main.java
public class Main {
public static void main(String args[]) {
Point<Double> point = new Tree<Point<Double>>().new Point<Double>();
}
}
【问题讨论】:
-
嗯
Point不存在 -Tree.Point存在。但是您真的想要两个不同的类型参数吗?我怀疑Tree或Point不应该是通用的。 -
例如,如果
Point不是通用的,那么您将拥有Tree<Double>.Point point = new Tree<Double>().new Point(); -
内部类可以是公共的。这是一个项目,他给了我们代码,它使用泛型。
-
嗯,你一定做错了,因为我的编译很好。
-
您没有使用在
Tree<T>中声明的任何T,因为Point被声明为它自己的<T>,它遮蔽了Tree中的一个。换句话说,你的代码就像class Tree<A> { class Tree<B> { public B position[]; } }(这里没有使用A,所以它是多余的,你为什么还要它?)。
标签: java generics inner-classes