java.util.Vector无法强制转换为java.util.ArrayList - 将List转换为ArrayList

时间:2017-05-29 14:45:51

标签: java jpa

我有以下代码

public List<Item> 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 = (ArrayList<Item>) query.getResultList();
        em.getTransaction().commit();
        return dbItems;
    }

我需要它来返回ArrayList而不是Array。是否有返回ArrayList的查询?

2 个答案:

答案 0 :(得分:0)

变化:

dbItems = (ArrayList<Item>) query.getResultList();

到此:

dbItems = new ArrayList<Item>(query.getResultList());

现在,从设计的角度来看,您的方法的客户端应该决定他们想要使用哪种实现,尽可能使用抽象/接口。忘掉ArrayList,只需在查询方法周围使用List,然后你的方法的客户端必须决定如何使用该List以及他们想要的实现。

此外,您不需要单个SELECT查询的事务

public List<Item> getDbItems()
    { 
        TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
        return query.getResultList();
    }

答案 1 :(得分:0)

您必须了解接口和类是什么:

  • 这里的界面是List,它将为您提供可以调用的一组函数/方法。
  • 您要实例化的类,在本例中为ArrayList,您说 如何 将为接口列表提供的方法将被执行,所以现在,你的代码可以编译,而且功能很好,可以:

    Engine