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