【发布时间】:2011-10-01 20:09:40
【问题描述】:
我在某个数据结构中使用泛型。我必须存储int x、int y 和Value value,其中value 是泛型类型。
我试图将所有这些分组到一个名为 NodeData 的对象中,然后在另一个类中创建一个 NodeData 的 ArrayList,(因此数组列表中的每个元素都将包含一个 x、y 和值.
我的NodeData如下:
public class NodeData<Value> {
private int x;
private int y;
private Value value;
在另一个类中,数组列表实例化如下:ArrayList<NodeData> items = new ArrayList<NodeData>();。
我收到一个数组列表错误:NodeData is a raw type. References to NodeData<Value> should be parametrized. 为什么会这样? NodeData 已经参数化为 NodeData<Value>。
谢谢
【问题讨论】:
-
当您执行 NodeData
时,假定您将用一些真实的类代替 Value。您定义它的方式 Value 可以是任何可能不是您想要的类型。 -
您收到的不是错误,而是警告,这是一个很大的不同。你正在做的事情并不安全,但如果你小心的话,可能会奏效。我建议你遵循 duffymo 的建议,因为这是泛型的用途——允许编译时类型检查。