Collection<T> collection = new Collection<T>(mylList);
但我有这个错误
无法实例化Collection
类型
答案 0 :(得分:55)
List<T>
已经实施了Collection<T>
- 您为什么需要创建一个新的?
Collection<T> collection = myList;
错误消息绝对正确 - 您无法直接实例化接口。如果要创建现有列表的副本,可以使用以下内容:
Collection<T> collection = new ArrayList<T>(myList);
答案 1 :(得分:2)
投射永远不需要new
:
Collection<T> collection = myList;
你甚至没有明确地使用强制转换,因为Collection
是List
的超类型,所以它会像这样工作。
答案 2 :(得分:1)
有多个解决方案可以将列表转换为集合
解决方案1
List<Contact> CONTACTS = new ArrayList<String>();
// fill CONTACTS
Collection<Contact> c = CONTACTS;
解决方案2
private static final Collection<String> c = new ArrayList<String>(
Arrays.asList("a", "b", "c"));
解决方案3
private static final Collection<Contact> = new ArrayList<Contact>(
Arrays.asList(new Contact("text1", "name1")
new Contact("text2", "name2")));
解决方案4
List<? extends Contact> col = new ArrayList<Contact>(CONTACTS);
答案 3 :(得分:0)
不知道你的代码,回答你的问题有点困难,但根据这里的所有信息,我相信问题是你正在尝试使用Collections.sort传递一个定义为Collection的对象,并且排序没有不支持。
第一个问题。为什么客户定义如此一般?为什么它不是List,Map,Set或更具体的东西?
如果客户端被定义为List,Map或Set,则不会出现此问题,因为您可以直接使用Collections.sort(客户端)。
HTH
答案 4 :(得分:0)
第一个集合是Interface类,您无法实例化。 Collection API
列表Ver APi也是一个接口类。
可能是
List list = Collections.synchronizedList(new ArrayList(...));
ver enter link description here
Collection collection= Collections.synchronizedList(new ArrayList(...));