2012年3月12日月曜日

ループ内でのインスタンス作成

ちょっと、釈然としない問題があったのでメモ。

Befor

for (final String imageUrl : stringlList) {
    final URL url = new URL(imageUrl);//Warning
    ...
 }


このコードだと、PMDで ループ内でインスタンスを作るのは避けてください(Avoid instantiating new objects inside loops)が表示されてしまう。 色々と解決方法を検討した結果 After

for (final String imageUrl : stringList) {
    final URL url = createURL(stringList);
   }

private URL createURL(final String url) throws MalformedURLException {
 return new URL(url);
}


とすることで警告を消すことができた。 メソッドに分けただけで、同じじゃないか・・・? 可読性とかも変わっていないような気がするし、メモリ管理の面で見ても結局はループ内でのインスタンスを作成していることに変わりは無い。 まあ、そのうちベンチマークしてみるとするか・・・。

0 件のコメント:

コメントを投稿