我正在使用本机sql从db检索数据。我正在获取Object []列表。
List<Object[]> objectList = session.createSQLQuery(query).setParameter("customerId", customerId).list();
我收到警告
类型安全:List类型的表达式需要未经检查的转换为 符合列表
如何解决这个问题?
答案 0 :(得分:3)
这可能是因为您使用的API不支持泛型。请考虑升级到最新版本或使用@SuppressWarnings。
当你绝对确定查询是否返回正确的类型时,你当然应该使用@SuppressWarnings。
如果可能的话,你也应该总是记录抑制警告的原因。
答案 1 :(得分:1)
当使用api不支持泛型返回paramterized类型时,type参数必须被视为通配符。
List<?> objectList = session.createSQLQuery(query).setParameter("customerId", customerId).list();
以上编译时没有警告。显然这不是你想要的类型。因此,您必须逐项测试演员项目,从技术上讲,List<?>
可以包含任何内容。
for(Object object : objectList){
if(object instanceof Object[]){
//Do stuff.
}
}
现在在实践中,如果你提前知道返回类型应该是什么,你可以只是压制警告并继续。只要知道如果你错了,你将获得访问列表的代码抛出的强制转换异常,而不是整个列表中执行错误“强制转换”的代码。