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