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 が暗黙的に新しい文字列を作成しています。