2017-05-10 33 views
-7

我有一个函数返回一个由我定义的类的集合。我正在为这个班级编写单元测试过程,但是,我无法围绕初始化集合或创建一个新头。
以下是方法:如何在Java中初始化泛型集合?

public Collection<MyClass> getHistory(String id) { 
    return infoRepository.findId(id); 
} 

现在,是UT以下如下:

public void testGetHistory() { 
    String id = "Sample-Id"; 
    MyClass myclass1 = getMyClass(); 
    StackInfo myclass2 = getMyClass(); 
    Collection<MyClass> myClassCollection = null; 
    myClassCollection.add(myclass1); 
    myClassCollection.add(myclass2); 
    } 

在UT,我有这之后更多的东西(的Mockito,断言语句),但我当我尝试将myclass的实例添加到集合时出现错误。我的代码不起作用。我知道我将它初始化为NULL,因为它有问题。但是,我该如何制作新的收藏品?

+5

'Collection myClassCollection = new ArrayList <>()',或任何适合你的'Collection'实现 –

回答

1

由于Collection是一个接口,可以没有实例化它,你必须用实现Collection接口的类来初始化。这可能是数组列表,链表,HashSet的,等等

Collection<MyClass> myClassCollection = new ArrayList<MyClass>(); 
Collection<MyClass> myClassCollection = new LinkedList<MyClass>(); 
Collection<MyClass> myClassCollection = new HashSet<MyClass>(); 

在文档(https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html)你可以找到收藏的Java实现了“所有已知实现类”部分。