未经检查的强制类型转换,将 'java.lang.Object' 转换为 'java.util.List'

7
@DataProvider
public Iterator<Object[]> validLogin() throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(new File("src/test/java/resources/UserData/login.xml")));
    String xml = "";
    String line = reader.readLine();
    while (line != null) {
        xml += line;
        line = reader.readLine();
    }
    XStream xStream = new XStream();
    xStream.processAnnotations(User.class);
    List<User> users = (List<User>) xStream.fromXML(xml);
    return users.stream().map((g) -> new Object[]{g}).collect(Collectors.toList()).iterator();
}

我看到这个警告。
unchecked cast 'java.lang.object' to 'java.util.list '   

at

List<User> users = (List<User>) xStream.fromXML(xml) ;

我该如何避免它们?
1个回答

15
在你的例子中,看起来你不需要这个是一个List<User>,所以你可以这样做
List<?> users = (List<?>) xStream.fromXML(xml);

如果您确实需要定义类型,那么无法避免产生警告。如果您确信类型正确,请使用 @SuppressWarnings("unchecked")。如果存在疑虑,请编写一些代码来断言所有元素确实都是正确的类型(我希望 JDK 有一个辅助方法来完成这个任务)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接