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가 새로운 문자열을 묵시적으로 생성합니다.