现在有一个方法返回的是一个Object,后面被调用的时候被转化成List,这时编译器warning 说 “Unchecked cast from Object to List”,这个该怎么才能去掉啊?executeStatement方法返回的必须是Object
public Object executeStatement(T clazz, Map oMap)
{
Object object = null;
List oList = new ArrayList();
oList = popluateRecordToObject(rs, oList);
object = oList;
return object;
}
public List queryForList(final Class clazz, Map oMap)
{
List result = (List)executeStatement(clazz, oMap);
return result;
}
hmm,这段代码本身能编译通过么?queryForList里的clazz是Class的,而executeStatement的第一个参数是T,不匹配诶。
根据[url=http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#What%20is%20an%20unchecked%20warning?]文档[/url],Java里做cast的时候如果目标类型是泛型类型的话就会出现unchecked warning。如果那个cast是符合自己的意图的,可以用@SuppressWarnings("unchecked")标注来去掉这个warning(但操作本身仍然是潜在不安全的)。
这个不是错误,只是提示你这个造型不知道是不是正确的。你可以点击旁边的那个提示,选择其中一个包含‘unckeck’的语句,点击加上注解就不会出现提示了
别画蛇添足
java 是可以自动向上转型的!
自动的upcast只说明executeStatement里可以直接return oList;,跟这里的警告没任何关系……