以下代码段导致 Eclipse 中倒数第二行出现警告"类型安全:从对象到 ArrayList 的未选中强制转换"。 只是想知道我能做些什么来改进它。 该代码用于从 XML 文件中读取对象。
private List<Facility> getFacilityCodes() {
InputStream in = this.getClass().getResourceAsStream("./resources/facility.xml");
String xml = convertStreamToString(in);
XStream xstream = new XStream(new StaxDriver());
xstream.alias("Facility", Facility.class);
xstream.alias("Facilities", List.class);
ArrayList<Facility> facilities = (ArrayList<Facility>) xstream.fromXML(xml);
return facilities;
}
问题是,
只要返回的对象是ArrayList
,强制转换就会成功,但由于擦除,它不能保证每个元素都是Facility
。如果你愿意,你可以自己做。
ArrayList<Facility> facilities =
((ArrayList<?>) xstream.fromXML(xml)).stream()
.filter(Facility.class::isInstance)
.map(Facility.class::cast)
.collect(Collectors.toCollection(ArrayList::new));