我在数据库上进行查询搜索,返回一个列表。 List填充了变量类型Object。我做一个query.get(0).getClass(),它返回(某事).WorkbookMappingClass。但问题是我必须将该对象转换为WorkbookMapping对象。但是它给了我一个I / O错误(也许是因为Exception实际上是全局的。)
以下是代码:
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());
有人有想法吗?
答案 0 :(得分:2)
List 的最后一个元素将是 query.size() - 1 ,只要列表与数组类似,从0开始。所以 query.get(query.size())在你的例子中返回null。
答案 1 :(得分:2)
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
所建议,您应该有ClassCastException
或ArrayIndexOfBoudsException
(正如您使用query.size()
访问的那样)