我想用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会出现?
答案 0 :(得分:0)
在您遇到以下情况时会发生错误(引发ArrayStoreException )。
如果此列表的组件不是可以存储在指定向量中的运行时类型。
答案 1 :(得分:0)
您的group
变量属于相当复杂的类型。 group
的每个元素都必须是List<Object[]>
类型。当您尝试将错误类型的元素放入数组时,会出现ArrayStoreException
。所以这里只有两种可能性:
group
中插入一个不包含List
数组Object
的元素;或Object
阵列,但您将其声明为比Object[]
更具体的内容,现在您正试图将错误的类型放入它。根据您的评论,您可能需要像这样定义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'元素时,它不是具有整数值的元素,而是具有数组的元素!