转换类是相同的对象

时间:2013-06-15 16:34:42

标签: java list casting

我在数据库上进行查询搜索,返回一个列表。 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());

有人有想法吗?

2 个答案:

答案 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所建议,您应该有ClassCastExceptionArrayIndexOfBoudsException(正如您使用query.size()访问的那样)