1

我正在对数据库进行查询搜索,该数据库返回一个列表。List 中填充了 Object 类型的变量。我做了一个 query.get(0).getClass() 并返回(某事).WorkbookMappingClass。但问题是我必须将该对象转换为 WorkbookMapping 对象。但它给了我一个 I/O 错误(可能是因为异常实际上是全局的。)

这是代码:

WorkbookMapping wk;
List query = ses.createQuery("FROM Workbook").list();
System.out.println("Class: "+query.get(query.size()).getClass());//return ...WorkbookMapping
wk =(WorkbookMapping)query.get(query.size());

有人有想法吗?

4

2 回答 2

1

只要列表是基于 0 的类似数组,列表的最后一个元素就是query.size ()-1 。因此query.get(query.size())在您的示例中返回 null 。

于 2013-06-15T16:39:01.053 回答
1
WorkbookMapping wk;
List query = ses.createQuery("FROM Workbook").list();
System.out.println("Class: "+query.get(query.size()).getClass());//return    ...WorkbookMapping
Object obj = query.get(query.size() - 1)
if(obj instanceof WorkbookMapping) {
    wk =(WorkbookMapping);
}

不管怎样,如Charlesworth建议的那样,您应该有一个ClassCastExceptionor ArrayIndexOfBoudsException(当您使用 访问时query.size()

于 2013-06-15T16:41:46.293 回答