我收到PMD的警告。它說我不應該在循環中實例化對象。這裏是我的代碼:實例化循環中的對象有什麼問題?
Collection<File> files = new LinkedList<>();
for (String name : names) {
files.add(new File(name));
}
這是怎麼回事?
我收到PMD的警告。它說我不應該在循環中實例化對象。這裏是我的代碼:實例化循環中的對象有什麼問題?
Collection<File> files = new LinkedList<>();
for (String name : names) {
files.add(new File(name));
}
這是怎麼回事?
您的第一步是針對某些特定的庫:the documentation。
應該檢查循環內創建的新對象,看它們是否可以在外部創建並重用。
這是真實的一般情況,但同樣經常(如果不是更多)也適合在循環內創建它們。在你的情況下,顯然在循環中創建一個新實例是必要的(這就是循環的目的),所以你可以忽略這個警告。
創建一個方法,該方法將返回一個新對象並在循環中調用該方法以獲取新對象,如果您確實想避免此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並不是什麼大不了的事情。
請不要浪費你的時間來解決這些問題。
有趣的是,當您的公司強制您通過驗證,結果是自動生成的JavaDoc非常低效的代碼... – lordscales91 2017-10-31 14:02:52
沒有什麼是真的錯了,: 看到這個: http://stackoverflow.com/questions/17340421/pmd-avoid-instantiating-new-objects-inside-loops – Ajdin 2014-11-23 21:32:26