如何使用Vector填充List <object []> []?

时间:2016-02-10 07:50:58

标签: java arrays generics vector

我想用Vector填充数组。变量声明如下:

private List<Object[]>[] group; 

但是,当我使用Vector填充它时,会抛出以下异常:

java.lang.ArrayStoreException: java.util.Vector
    at presentationtier.GraphMB.createTables(GraphMB.java:68)
    at presentationtier.GraphMB.init(GraphMB.java:48)

这是如何引起的?如何解决?

public List<Object[]> getInv_AccountingError(String action){
        EntityManagerFactory emf = null;
        EntityManager em = null;
        List<Object[]> list = new ArrayList<Object[]>();
        try{
            emf = Persistence.createEntityManagerFactory("Test");
            em = emf.createEntityManager();

            Query query = em.createNativeQuery("select k.* from "+action+" k");
            list = query.getResultList();   

我从db获取了一个对象数组列表,我循环使用这个方法,比如调用它n次以得到一个列表数组,然后为什么vector会出现?

3 个答案:

答案 0 :(得分:0)

在您遇到以下情况时会发生错误(引发ArrayStoreException )。

如果此列表的组件不是可以存储在指定向量中的运行时类型。

答案 1 :(得分:0)

您的group变量属于相当复杂的类型。 group的每个元素都必须是List<Object[]>类型。当您尝试将错误类型的元素放入数组时,会出现ArrayStoreException。所以这里只有两种可能性:

  1. 您正试图在group中插入一个不包含List数组Object的元素;或
  2. 您正在尝试填充其中一个Object阵列,但您将其声明为比Object[]更具体的内容,现在您正试图将错误的类型放入它。
  3. 根据您的评论,您可能需要像这样定义group

    private Object[][] group;
    

    这会生成一个Object数组的数组。因此,当您获得Object[]类型的值时,您就可以将其存储为group的元素:

    Object[] anElement = // well, wherever they come from
    group[i] = anElement;
    

答案 2 :(得分:0)

在帖子的原始版本中,您似乎有两个名为“var”的变量。

for-each标记中的第一个具有整数索引,另一个用于data-table标记。

我的猜测是,当您尝试使用'var'的值访问'columns'元素时,它不是具有整数值的元素,而是具有数组的元素!