请帮助我理解,下面的代码在 for 语句中显示类型不匹配:“无法从元素类型对象转换为列表”。我知道我错过了一些愚蠢的事情。请帮忙。
public void setMapPriceValue(SolrItemVO solrItemVO, ArrayList proce1) throws SolrDAOException
{
List xcatentAttrList = (List<Xcatentattr>) proce1.get(0);
solrItemVO.setMapPrice(-1); // setting default value
for(List xcatentattr : xcatentAttrList){
if(xcatentattr.get(0) == 33)
solrItemVO.setMapPrice(xcatentattr.get(1));
solrItemVO.setMapPriceVal(xcatentattr.get(2));
}
}
最佳答案
首先,您要混合泛型和原始类型 - 如果您只使用泛型,这会让您的生活更轻松:
List<Xcatentattr> xcatentAttrList = (List<Xcatentattr>) proce1.get(0);
您还可以考虑在方法签名中使用正确的泛型类型(我假设 proce1
是列表的列表):
public void setMapPriceValue(SolrItemVO solrItemVO, List<List<Xcatentattr>> proce1)
在这种情况下,您不再需要类型转换:
List<Xcatentattr> xcatentAttrList = proce1.get(0);
然后增强 for 循环的语法是 for (TypeOfObjectInYourList object : list)
,所以在您的情况下:
for(Xcatentattr xcatentattr : xcatentAttrList)
关于java - 在 Java 中循环遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748113/