我从PMD收到此警告。它说我不应该在循环中实例化对象。这是我的代码:
Collection<File> files = new LinkedList<>();
for (String name : names) {
files.add(new File(name));
}
它有什么不对?
答案 0 :(得分:2)
针对特定图书馆的第一步:the documentation。
应检查循环中创建的新对象,看它们是否可以在它们之外创建并重用。
一般来说这是正确的,但同样经常(如果不是更多)也适合在循环内创建它们。在你的情况下,显然在循环中创建一个新实例是必要的(这是循环的用途),所以你可以忽略这个警告。
答案 1 :(得分:1)
创建一个方法,如果你真的想避免这个PMD警告,它将返回一个新对象并在循环中调用该方法来获取新对象。
对于你的代码,它将是这样的。
public static File createFile(String name) {
File f = new File(name);
return f;
}
Collection<File> files = new LinkedList<>();
for (String name : names) {
files.add(createFile(name));
}
然而,我们不能通过这种改变来提高表现 因此,避免这种PMD并不是什么大问题 请不要浪费你的时间来解决这些问题。