如何在Java中将对象添加到集合中?

时间:2014-07-25 04:26:15

标签: java object testing junit

我正在为一个公共汽车站写一些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);
...
}

4 个答案:

答案 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>()

请参阅这些链接

Set examples

Set API

干杯!!

答案 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);
        ...
    }
}