java - 如何避免警告类型安全 : Unchecked cast from Object to ArrayList<Facility>

标签 java

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

关于java - 如何避免警告类型安全 : Unchecked cast from Object to ArrayList<Facility>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48316543/

相关文章:

java - 日期时间解析异常;无法在索引 4 处解析文本 '2018-10-18 00:00:00'

java - Spring中使用注解与XML配置的情况?

java - 在提交到数据库之前,根据servlet中的列将结果排列到多个表中

java - Hibernate + Spring 从 MySQL 迁移到 SQL Server

javascript - JavaScript以任何方式声明严格类型变量

java - JSF 在上下文初始化时初始化应用程序范围 bean

java - 为什么 AutoClosaeble 使用 try/catch 语义?

java - 正则表达式从 errorString 捕获多个单词

java - 选择复选框或单选按钮

java - 使用简单的 Java 类连接(登录)到 Alfresco