在 Java 片段中:
SyndFeedInput fr = new SyndFeedInput();
SyndFeed sf = fr.build(new XmlReader(myInputStream));
List<SyndEntry> entries = sf.getEntries();
最后一行生成警告
“类型 List
的表达式需要未经检查的转换以符合 List<SyndEntry>
”
解决这个问题的合适方法是什么?
原文由 user46277 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于
getEntries
返回原始List
,它可以容纳任何东西。无警告的方法是创建一个新的
List<SyndEntry>
,然后将 --- 结果的每个元素转换为SyndEntry
sf.getEntries()
结果,然后再将其添加到新列表中。Collections.checkedList
不会 为你做这个检查——尽管它本来可以实现的。通过预先进行自己的转换,您将“遵守 Java 泛型的保证条款”:如果引发
ClassCastException
,它将与源代码中的转换相关联,而不是不可见的转换由编译器插入。