作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一段代码必须符合 JDK 1.4。下面是一个获取运行时异常的片段。
BaseDocument baseDocument = new BaseDocument();
baseDocument.setGuid("{somethinghere}");
List document = new ArrayList();
document.add(baseDocument);//runtime error
异常(exception):
java.lang.ClassCastException: [Ljava.lang.Object; incompatible with [Lcom.company.base.BaseDocument;
我不明白为什么我们不能将它转换为 java 对象(因为 Object 是 java 中所有类的父类)。
我使用的是 IBM JDK 1.7 版,Eclipse 编译器设置为 JDK 1.4
请解释我在这里犯了什么错误。我知道泛型是标准,但它必须符合 JDK 1.4 :(
提前致谢!
最佳答案
实际上,消息说:
[Ljava.lang.Object; incompatible with [Lcom.company.base.BaseDocument;
[
字符非常重要。显然,有些东西正在尝试将 Object[]
类型的东西转换为 BaseDocument[]
;即,您在这里处理数组类型。
但是,我不知道究竟是什么导致了这里的问题,因为(从表面上看)您发布的代码中不应该有 BaseDocument[]
的实例。此外,我不相信您声称在该行抛出该异常。以下是 ArrayList.add
方法的源代码(Java 6 版本):
private transient Object[] elementData;
public boolean add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
将引用分配给对象数组 (Object[]
) 不需要任何运行时类型检查,也不会抛出 ClassCastException
。
如果您向我们展示了一个完整堆栈跟踪,那么诊断起来会更容易。
关于java - ClassCastException : java. lang.Object 与 com.company.base.BaseDocument 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31533294/
我有一段代码必须符合 JDK 1.4。下面是一个获取运行时异常的片段。 BaseDocument baseDocument = new BaseDocument(); baseDocument.set
我是一名优秀的程序员,十分优秀!