Objects — 객체 유틸리티

Objects — 객체 유틸리티

Objects 클래스는 객체를 다루거나 연산 전 특정 조건을 확인하는 정적 유틸리티 메서드로 구성돼 있어요. 객체의 해시코드 계산, 객체의 문자열 반환, 두 객체 비교, 인덱스나 서브레인지 값이 범위를 벗어났는지 확인하는데 null 안전(null-safe)/null 허용(null-tolerant) 메서드들을 포함해요.

출처: Java API Reference

본문

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.toStringhashCode를 오버라이드하지 않았다면 그 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) — 시작 인덱스+크기 범위가 경계 내인지 확인해요(정수 오버플로 고려).

더 알아보기 (Learn more)