如何避免警告 类型安全:从对象到数组列表<Facility>的未选中转换



以下代码段导致 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));

相关内容

最新更新