将对象转换为数组 - IllegalArgumentException - 参数不是数组

时间:2016-10-19 15:38:32

标签: java arrays casting

我有关于转换和转换的问题,

消息列表是 Object 类,列表的每个元素都是不同类型的数组,所以我需要一种方法来帮助我转换每个元素对象组件到数组。

这是我的代码部分。

    String query = "SELECT m.MSG_CODE, m.MSG_TYPE, m.MSG_TITLE, m.MSG_CORE, me.IS_READ "
            + "FROM EBANKING.EBAN_MESSAGING m, EBANKING.EBAN_MESSAGING_ENDUSER me WHERE me.END_USER_CODE = "
            + userCode + " AND me.MSG_CODE = m.MSG_CODE";
    List<Object> messages = ebankingPersistenceService.getResultNativeQuery(query);
    List<EbanMessagingDto> notifications = new ArrayList<EbanMessagingDto>();

    for (Object e : messages.toArray()) {
        System.out.println(Array.getLength(e)+" ---------------- IS THE LENGTH");
        System.out.println(Array.getLong(e, 0)+" ---------------- IS THE FIRST ELEMENT");
    }

最后一行总是导致 IllegalArgumentException:参数不是数组但它在前一行显示长度为5。

任何帮助都将得到无限的赞赏。

提前致谢。

enter image description here

见人, e 是一个数组。我不知道发生了什么。

4 个答案:

答案 0 :(得分:3)

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Cauta Elev</title> </head> <body> <form method="post"> <input type="text" name="cauta" placeholder="Cauta Elevul"/> <input type="submit" value="Cauta"/> </form> <?php print("$output"); ?> </body> </html>将为您提供messages.toArray(),并使用您的循环遍历Object[]数组并使用单个对象即Object[],之后您将传递单个对象到eArray.getLength(e)

更新:如果给定索引处的值无法转换为返回类型,即Array.getLong(e, 0),则抛出异常,在这种情况下,long可以' t被转换为BidDecimal因此例外, 作为替代方案,您可以使用longget

return方法

答案 1 :(得分:3)

如果您希望将“ e ”对象转换为表格:

{{1}}

希望得到这个帮助。

答案 2 :(得分:0)

实际上这个错误意味着“参数不是数字数字”。即如果您传递String [],例如:

String[] test = {"123", "124"};
Array.getLong(test, 0);

所以,如果getLenght(x)返回5,但是getLong(x,0)失败,则x是数组,但x [0]不能转换为long

答案 3 :(得分:-2)

Array.getLong(e, 0)这里期待e成为一个数组,但是你正在传递一个对象..请先转换它然后再使用它......

另一个SO link,我发现它很有用..它与你的问题不同,但类似的东西......它可能会帮助你并获得更多的知识