【发布时间】:2014-06-03 19:28:40
【问题描述】:
我正在尝试用来自对象列表readExcel.readSheet(0) 的数据填充 tableModel,使用以下代码:
TableModel tableModel = new DefaultTableModel(
new Vector<List<Object>>(readExcel.readSheet(0)
.subList(1, readExcel.readSheet(0).size())),
new Vector<Object>(readExcel.readSheet(0).get(0)));
但我遇到了这个异常
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Vector
我认为这是关于通过列表实例化 Vector,但是通过 Vector 的 javadoc,我们可以看到使用集合实例化 Vector 是可能的。
我的代码 sn-p 有什么问题?
【问题讨论】:
-
我认为您需要阅读更多有关铸造及其工作原理的信息。对于您的解决方案,您可以使用向量中的 addAll 方法在数组列表中添加元素
-
是的,你不懂“演员表”。这一点也不稀奇,因为这是一个难以掌握的概念,而且可能比理解它更容易被误解。
-
@Vinay 你能推荐一个我可以阅读它的好地方吗?感谢您的 addAll 方法技巧
-
使用泛型进行铸造是很棘手的。意识到您不能从 List[A extends B] 转换为 List[B] 似乎并不明显。
-
使用泛型进行强制转换非常棘手,因为它不是真正的操作,而只是您用来欺骗编译器的操作。运行时不知道对象是
Vector<Object>还是Vector<String>。
标签: java casting jtable tablemodel