【问题标题】:testDecodeSingleInt(com.asdf.TestDecoder): java.lang.Integer cannot be cast to [Ljava.lang.Object; [closed]testDecodeSingleInt(com.asdf.TestDecoder): java.lang.Integer 不能转换为 [Ljava.lang.Object; [关闭]
【发布时间】:2013-06-05 21:23:18
【问题描述】:

当我在单元测试中运行以下代码时:

Object parsedObject = null;
Integer i = new Integer(bb.getInt());
parsedObject = i;

我在 JUnit 运行时输出期间收到主题行中的错误。bb 是一个 ByteBuffer 并且 parsedObject 是一个对象。我正在使用 Java 7,我的同事和我对问题所在感到困惑。

有什么想法吗?

【问题讨论】:

  • 请向我们展示您的整个堆栈跟踪和整个测试。
  • 有没有办法让 junit 打印整个堆栈跟踪?测试是对该函数的一次调用。
  • 您确定parsedObjectObject 吗?错误消息表明,它是一个Object[],您不能将Integer 强制转换为数组类型。
  • 哈哈。 parsedObject是什么类型的,同志已经问过了?看起来它是Object[] 类型,根据 Java 语言规定,它不能从 Integer 分配。
  • 错误不是来自上述 3 行。

标签: java object casting integer


【解决方案1】:

[Ljava.lang.Object;是 Object[]

的名称

您正在尝试将整数转换为数组。

【讨论】:

    【解决方案2】:

    错误消息表明,parsedObjectObject[],您不能将 Integer 强制转换为数组类型。

    Object 将是 java.lang.Object

    Object[][Ljava.lang.Object

    【讨论】:

      【解决方案3】:

      根据java: what is this: [Ljava.lang.Object;?,您的错误表明您正在尝试强制转换为 Object[],而不是 Object。所以,正如一些人已经告诉你的那样,这就是问题所在,从 Integer 到 Object[] 的转换在 Java 中是不允许的。请确认您没有在代码的任何可能影响此的地方使用 Object[]。

      【讨论】:

      • 我将 parsedObject 的声明放在了问题中。它是一个对象。
      • 我不是在谈论 parsedObject。我已经看到了你对此的评论。我说的是一般检查它,因为这就是错误的含义。
      猜你喜欢
      • 2012-05-01
      • 2013-12-27
      • 2019-04-26
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多