我正在为一个公共汽车站写一些JUnit测试,但我在尝试创建要通过测试使用的对象时遇到了麻烦:
public class StopTests {
BusRoute rte = new BusRoute("250");
Set<BusRoute> set = new Set<BusRoute>();
BusStop stop = new BusStop(00000, "Staples Center", 90.0, 90.0, set);
...
}
我的问题是测试不会编译,因为Eclipse说“new Set()”无法实例化。我的意图是将'rte'添加到'set'中,以便可以在没有编译错误的情况下创建'stop',但我对如何执行此操作感到困惑。我试着接近它:
public class StopTests {
BusRoute rte = new BusRoute("250");
Set<BusRoute> set = new Set<BusRoute>();
set.add(BusRoute rte);
BusStop stop = new BusStop(00000, "Staples Center", 90.0, 90.0, set);
...
}
但是Eclipse给了我另一个错误,即在'add'之后没有标识符。
最好的方法是什么?
编辑:这就是我现在所拥有的:public class StopTests {
BusRoute rte = new BusRoute("250");
Set<BusRoute> set = new HashSet<BusRoute>();
set.add(rte);
BusStop stop = new BusStop(00000, "Staples Center", 90.0, 90.0, set);
...
}
答案 0 :(得分:2)
Set
是一个接口,因此无法创建它的实例。您需要创建和实现Set实现,例如HashSet
。
尝试更改此内容:
Set<BusRoute> set = new Set<BusRoute>()
到
Set<BusRoute> set = new HashSet<BusRoute>()
另外,要在集合中添加元素,您需要在集合实例上调用add
而不是在BusRoute
实例上调用 rts.add(BusRoute rte);
。所以改变这个:
set.add(rte);
到
{{1}}
答案 1 :(得分:1)
您的问题在于此行:rts.add(BusRoute rte)
。您不需要在rte
前加上其类型:改为使用rts.add(rte)
。
答案 2 :(得分:0)
Set
是一个接口,您需要使用实现类进行实例化:
Set<BusRoute> set = new HashSet<BusRoute>()
请参阅这些链接
干杯!!
答案 3 :(得分:0)
Set
是抽象的,因此无法实例化。您需要使用Set
的实施,例如HashSet
。
public class StopTests {
public void someMethod() {
BusRoute rte = new BusRoute("250");
Set<BusRoute> set = new HashSet<BusRoute>();
set.add(rte);
BusStop stop = new BusStop(00000, "Staples Center", 90.0, 90.0, set);
...
}
}