2015-04-12 54 views
1
List<Contact> contacts = dataManager().getContactsDao().getAll(); 

当我需要将其转换为ArrayList<Contact>,而不是迭代的列表,并通过一个项目复制到ArrayList一个,有没有其他的办法做到这一点?的Java ClassCastException异常铸造当列表返回到其类型

我已经试过

ArrayList<Contact> contactarylist = 
    (ArrayList<Contact>) dataManager().getContactsDao().getAll(); 

,但它会导致一个ClassCastException因为ListArrayList是不允许的。

感谢

+0

什么是'ContactsDAO.getAll()'签名的构造? –

+0

更重要的是,向我们展示'ContactsDao.getAll'的实现 –

回答

1

只需使用List<>接口不是具体的类代码。 hibernate不会返回ArrayList作为其结果集实现。 但它返回一个列表。和你的代码一样,所有的变量都应该被定义为接口,但是它们可以用具体的类来初始化。

List<Contact> cs = new ArrayList<>(); 
... 
cs = dataManager().getContactsDao().getAll(); 

如果你确实需要有ArrayList的使用需要收集

List<Contact> cs = new Arraylist<>(dataManager().getContactsDao().getAll());