equals()、hashCode()、compareTo()、Comparator.compare() メソッド内の (一時的な) 新しいオブジェクトの構築を報告します。
新しいオブジェクトはコンストラクター呼び出しのほか、foreach ステートメント内でオートボクシングまたはイテレーターの作成を行った場合も作成される可能性があります。
これにより、パフォーマンスの問題が生じる可能性があります。たとえば、Set メソッドや Map にオブジェクトを追加した場合、これらのメソッドが頻繁に呼び出されることになります。
このインスペクションは、オブジェクトが throw または assert ステートメントで作成されている場合は報告しません。
例:
class Person {
private String name;
private int age;
public boolean equals(Object o) {
return Arrays.equals(new Object[] {name, age}, new Object[] {((Foo)o).name, ((Foo)o).age});
}
public int hashCode() {
return (name + age).hashCode();
}
}
この例では 2 つの追加配列が equals() 内で作成され、age フィールドの使用箇所がボクシングを要求しており、name + age が暗黙的に新しい文字列を作成しています。