Java 什么';在循环中实例化对象是错误的吗?

Java 什么';在循环中实例化对象是错误的吗?,java,Java,我收到PMD的警告。它说我不应该在循环中实例化对象。这是我的密码: Collection<File> files = new LinkedList<>(); for (String name : names) { files.add(new File(name)); } Collection files=new LinkedList(); for(字符串名称:名称){ 添加(新文件(名称)); } 这有什么不对吗?您的第一步是实现特定于库的内容: 应该检查在循环内

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

Collection<File> files = new LinkedList<>();
for (String name : names) {
  files.add(new File(name));
}
Collection files=new LinkedList();
for(字符串名称:名称){
添加(新文件(名称));
}

这有什么不对吗?

您的第一步是实现特定于库的内容:

应该检查在循环内创建的新对象,看它们是否可以在循环外创建并重用


这在一般情况下是正确的,但同样经常(如果不是更多的话)在循环中创建它们也是合适的。在您的情况下,显然需要在循环中创建一个新实例(这就是循环的目的),因此您可以忽略此警告。

创建一个方法,该方法将返回一个新对象,并在循环中调用该方法以获取新对象,如果您确实想避免此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));
    }
公共静态文件createFile(字符串名称){
文件f=新文件(名称);
返回f;
}
集合文件=新建LinkedList();
for(字符串名称:名称){
添加(createFile(name));
}
但是,我们无法通过此更改提高性能。
因此,避免这种PMD不是什么大问题。

请不要在解决这些问题上浪费时间。

这并没有什么问题:看看这个:有趣的是,当你的公司强迫你通过验证时,结果是自动生成JavaDoc的代码非常低效…@lordscales91 Fact!