我有这段代码
public class TupleSpace implements aTupleSpace {
private Collection<aTuple> theSpace;
public TupleSpace() {
theSpace
}
public void out(aTuple v) {
theSpace.add(v);}
<。> .add会导致错误,我认为是因为.add没有为通用集合类型定义?或者因为我没有正确理解这一行:
private Collection<aTuple> theSpace;
我必须保持这一行相同,但可以对out方法或类的其余部分进行任何更改
我只是希望能够将内容添加到集合中并搜索集合中的内容
答案 0 :(得分:2)
集合只是一个界面。
它定义了您可以使用theSpace
执行的操作,并且与theSpace
实际上的内容有些无关。它可能是列表或地图或完全不同的东西。
Collection.add(E e)
确实是所有集合共有的方法。实际的实施可能会有所不同。
但是,private Collection<aTuple> theSpace;
只是声明变量。
创建null
的实例时,它将设置为TupleSpace
。
这是您尝试使用theSpace
时抛出NullPointerException的原因。
因此,您需要创建一个具体的Collection实例并将其分配给theSpace
,然后才能使用它(例如添加对象)。
有很多可以与SDK一起使用的Collection类型。 选择一个适合您的用例。下面是一个使用ArrayList:
的示例// ...
public TupleSpace() {
this.theSpace = new ArrayList<aTuple>();
}
// ...