将列表强制转换回其类型时的Java ClassCastException List contacts=dataManager().getContactsDao().getAll();

将列表强制转换回其类型时的Java ClassCastException List contacts=dataManager().getContactsDao().getAll();,java,hibernate,Java,Hibernate,当我需要将其转换为ArrayList,而不是迭代列表并将项目逐个复制到ArrayList时,还有其他方法吗 我试过了 List<Contact> contacts = dataManager().getContactsDao().getAll(); ArrayList联系人列表= (ArrayList)dataManager().getContactsDao().getAll(); 但由于不允许使用列表到数组列表,因此它将导致ClassCastException 谢谢只需在代码中

当我需要将其转换为
ArrayList
,而不是迭代列表并将项目逐个复制到ArrayList时,还有其他方法吗

我试过了

List<Contact> contacts = dataManager().getContactsDao().getAll();
ArrayList联系人列表=
(ArrayList)dataManager().getContactsDao().getAll();
但由于不允许使用
列表
数组列表
,因此它将导致
ClassCastException

谢谢

只需在代码中使用
列表
接口,而不是具体的类。 hibernate不会将ArrayList作为其结果集实现返回。 但它会返回一个列表。与您的代码相同,所有变量都应该定义为接口,但它们可以用具体的类初始化

ArrayList<Contact> contactarylist =
    (ArrayList<Contact>) dataManager().getContactsDao().getAll();
List cs=new ArrayList();
...
cs=dataManager().getContactsDao().getAll();
如果确实需要ArrayList,请使用接受集合的构造函数

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

ContactsDAO.getAll()的签名是什么?更重要的是,向我们展示
ContactsDAO.getAll的实现
List<Contact> cs = new Arraylist<>(dataManager().getContactsDao().getAll());