Objects — 객체 유틸리티
Objects — 객체 유틸리티
Objects 클래스는 객체를 다루거나 연산 전 특정 조건을 확인하는 정적 유틸리티 메서드로 구성돼 있어요. 객체의 해시코드 계산, 객체의 문자열 반환, 두 객체 비교, 인덱스나 서브레인지 값이 범위를 벗어났는지 확인하는데 null 안전(null-safe)/null 허용(null-tolerant) 메서드들을 포함해요.
본문
public final class Objects extends Object
비교와 해시
equals(Object a, Object b)— 두 인자가 서로 같으면true를 반환해요. 둘 다null이면true, 첫 인자가null이 아니면a.equals(b)로 판단해요.deepEquals(Object, Object)— 깊은 동등성을 확인해요. 둘 다 배열이면Arrays.deepEquals알고리즘을 사용해요.hashCode(Object)—null이 아닌 인자는 해시코드,null은 0을 반환해요.hash(Object... values)— 여러 필드 값의 해시코드를 만들어요.Objects.hash(x, y, z)처럼Object.hashCode()구현에 유용해요. 단일 객체 참조를 주면 그 객체 참조의 해시코드와 같지 않아요(hashCode(Object)로 계산해야 해요).compare(T, T, Comparator)— 인자가 동일하면 0, 아니면c.compare(a, b)를 반환해요.
문자열
toString(Object)—null이 아니면toString,null이면"null"을 반환해요.toString(Object, String nullDefault)— 첫 인자가 null이 아니면 그toString, 아니면 기본 문자열을 반환해요.toIdentityString(Object)—Object.toString과hashCode를 오버라이드하지 않았다면 그 toString과 동등한 문자열을 반환해요.
null 검사
requireNonNull(T)— 참조가null이 아니면 반환하고,null이면NullPointerException을 던져요. 메서드/생성자 파라미터 검증에 주로 사용해요.requireNonNull(T, String)/requireNonNull(T, Supplier<String>)— 커스터마이즈된 메시지로NullPointerException을 던져요.isNull(Object)/nonNull(Object)— 참조가 null인지 아닌지에 따라 boolean을 반환해요.requireNonNullElse(T, T)/requireNonNullElseGet(T, Supplier)— 첫 인자가null이 아니면 그 값, 아니면 기본값/공급 값을 반환해요.
범위 검사
checkIndex(int, int)/checkIndex(long, long)— 인덱스가0(포함)~length(제외) 범위 내인지 확인해요. 벗어나면IndexOutOfBoundsException을 던져요.checkFromToIndex(int, int, int)— 서브레인지가 범위 내인지 확인해요.checkFromIndexSize(int, int, int)— 시작 인덱스+크기 범위가 경계 내인지 확인해요(정수 오버플로 고려).