【问题标题】:How to populate a List<Object[]>[] with a Vector?如何用向量填充 List<Object[]>[]?
【发布时间】:2016-02-10 07:50:58
【问题描述】:

我想用Vectors 填充一个数组。变量声明如下:

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();   

我从数据库中得到一个对象数组列表,然后我循环这个方法,比如调用它 n 次来获取一个列表数组,那么为什么向量会出现?

【问题讨论】:

  • 你为什么把代码藏在最右边?是不是太丢人了?
  • 不,我直接从我的 xhtml 文件中复制了它,我认为它不会令人尴尬 :)
  • 如果你能帮助 Balus 那就太好了
  • 你没有告诉你遇到了哪个错误。一个好的错误本身就是整个答案。如果您无法解释它,那么您不应该忽略它,就好像它是不相关的信息一样。相反,请与我们分享,以便我们可以用外行的方式翻译错误消息。至少,我有根据的猜测是您实际上需要 而不是
  • 严重:Servlet.service() for servlet [Faces Servlet] in context with path [/Dashboarddetails] 引发异常 [在托管 bean 测试上执行资源注入时出错],根本原因是 java.lang。 ArrayStoreException: java.util.Vector 页面没有加载它自己崩溃

标签: java arrays generics vector


【解决方案1】:

在您的情况下,错误(Throws ArrayStoreException)发生在以下情况。

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

【讨论】:

  • 更多详情请参考link
  • 我已经编辑了我的问题,请提出一些需要你帮助的建议,无法解决这个问题
【解决方案2】:

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

  1. 您正试图向group 插入一个不是List 的元素,该元素包含Object 数组;或
  2. 您正在尝试填充 Object 的数组之一,但您将其声明为比 Object[] 更具体的内容,现在您尝试将错误的类型放入其中。

根据您的 cmets,您可能需要像这样定义 group

private Object[][] group;

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

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

【讨论】:

  • 你能帮我解决这个问题吗?我无法弄清楚
  • 我想做的事情是创建一个对象数组类型列表的数组。因为我希望得到对象数组类型的值并且没有这样的数组
  • 我无法以这种方式定义组,因为我从方法中获取列表。我已在您的描述中显示了我的方法主体
  • 我已经编辑了我的问题,请提出一些需要你帮助的建议,无法解决这个问题
【解决方案3】:

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

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

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

【讨论】:

  • 我已经编辑了我的问题,请提出一些需要你帮助的建议,无法解决这个问题
  • 回答为什么query.getResultList()返回一个向量是因为a vector is a list as wellThisthis 帖子可能对你更有帮助
  • 那么,我该怎么办?
  • 你能告诉我如何在一个列表中制作一个列表的数据表,比如 List> group = new ArrayList>();
  • 我相信它看起来像这样:List&lt;List&lt;Object[]&gt;&gt; listOfListOfObjectArray=null; for(List listOfObjectArray : listOfListOfObjectArray) { Object[] rowData = listOfObjectArray.get(0); for(int i=0;i&lt;rowData.length;i++) { System.out.print(rowData[i] + " "); } System.out.println(); }
猜你喜欢
  • 2012-07-14
  • 2014-01-20
  • 2018-06-12
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多