在循环中实例化对象有什么不对?

时间:2014-11-23 21:28:19

标签: java

我从PMD收到此警告。它说我不应该在循环中实例化对象。这是我的代码:

Collection<File> files = new LinkedList<>();
for (String name : names) {
  files.add(new File(name));
}

它有什么不对?

2 个答案:

答案 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并不是什么大问题 请不要浪费你的时间来解决这些问题。