线程“AWT-EventQueue-0”java.lang.ClassCastException错误中出现异常

线程“AWT-EventQueue-0”java.lang.ClassCastException错误中出现异常,java,Java,当我运行应从数据库下载项目的方法时,将出现以下错误: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.dke.ps.Tables.Item cannot be cast to com.dke.ps.Items.Item at com.dke.ps.Shop.Shop.loadItems(Shop.java:161) at com.dke.ps.Shop.Shop.init(Shop.

当我运行应从数据库下载项目的方法时,将出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.dke.ps.Tables.Item cannot be cast to com.dke.ps.Items.Item
    at com.dke.ps.Shop.Shop.loadItems(Shop.java:161)
    at com.dke.ps.Shop.Shop.init(Shop.java:122)
    at com.dke.ps.Shop.Shop.<init>(Shop.java:60)
还有我的com.dke.ps.Items.Item

**
 * General class for an item containing common information sutch as id, name,
 * description, path to an icon, price and type of an item.
 * @author valecvit
 * @author koresmi1
 */
public abstract class Item
{
    /**
     * Unique id of an item.
     */
    public int itemid;
    /**
     * Name of an item.
     */
    public String name;
    /**
     * Description of an item.
     */
    public String description;
    /**
     * Relative path to item image.
     */
    public String icon;
    /**
     * Type of an item.
     */
    public int type;
    /**
     * Price of an item.
     */
    public int price;

}
我真的不知道问题出在哪里。谁能给我解释一下例外情况吗

顺便说一句

下面是getDbItems方法:

ArrayList<Item> dbItems = new ArrayList<>();

        EntityTransaction entr=em.getTransaction();
            entr.begin();
        TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
        dbItems = new ArrayList<Item>(query.getResultList());
        em.getTransaction().commit();
预期结果如下所示:

listOfDbItems = server.getDbItems();
        listOfUsersItems = server.getPurchasedItems(user);
        dlmItems.clear();

        int numberOfItemsInDb = listOfDbItems.size();

        for (int i = 0; i < numberOfItemsInDb; i++)
        {
            dlmItems.addElement((listOfDbItems.get(i)).name);
        }
第一个类是通过数据库中的持久性实体类创建的,第二个是我创建的。如果我将ArrayList更改为ArrayList dbItems,它会抛出一个错误:找不到适合ArrayList的构造函数。构造函数ArrayList.ArrayListin不适用


谢谢你的帮助

问题是listofBitems.geti返回com.dke.ps.Tables.Item,而dlmItems需要com.dke.ps.Items.Item。您应该更改DefaultListModel dlmItems=new DefaultListModel以接受com.dke.ps.Items.Item,或者在添加到dlmItem之前将Tables.Item对象转换为Items.Item对象。

这是com.dke.ps.Shop.Shop.loadItemsShop.java:161?dlmItems.AddElementListofBitems.geti.name上的这一行;DLM的类型是什么?什么是listofBitems.geti.name返回?private DefaultListModel dlmItems=new DefaultListModel;和私有void loadItems{listofBitems=server.getDbItems;listOfUsersItems=server.getPurchasedItemsuser;dlmItems.clear;int numberOfItemsInDb=listofBitems.size;对于int i=0;ilistOfDbItems = server.getDbItems(); listOfUsersItems = server.getPurchasedItems(user); dlmItems.clear(); int numberOfItemsInDb = listOfDbItems.size(); for (int i = 0; i < numberOfItemsInDb; i++) { dlmItems.addElement((listOfDbItems.get(i)).name); }