[Java] 기본 API 클래스 ②
[ Objects
클래스 ]
java.util.Objects
클래스는 객체 비교, 해시코드 생성,null
여부, 객체 문자열 리턴 등의 연산을 수행하는 정적 메소드로 구성된Objects
의 유틸리티 클래스이다.
다음은 Objects
클래스가 가지고 있는 정적 메소드들이다.
1. 객체 비교 ( compare(T a, T b, Comparator<T> c)
)
objects.compare(T a, T b, Comparator<T> c)
메소드는 두 객체를 비교자(Comparator
)로 비교해서int
값을 리턴한다.
java.util.Comparator<T>
는 제네릭 인터페이스 타입으로 두 객체를 비교하는 compare(T a, T b)
메소드가 정의되어 있다. (T
: 비교할 객체 타입)
compare()
메소드의 리턴 타입은 int
인데, a
가 b
보다 작으면 음수
, 같으면 0
, 크면 양수
를 리턴하도록 구현 클래스를 만들어야 한다.
public interface Comparator<T> {
int compare(T a, T b);
}
2. 동등 비교 ( equals()
와 deepEquals()
)
📌 equals()
Objects.equals(Object a, Object b)
는 두 객체의 동등을 비교하는데 다음과 같은 결과를 리턴한다.
a
와b
가 모두null
일 경우true
를 리턴한다.a
와b
가null
이 아닌 경우는a.equals(n)
의 결과를 리턴한다.
📌 deepEquals()
Objects.deepEquals(Object a, Object b)
역시 두 객체의 동등을 비교한다.
a
와 b
가 서로 다른 배열일 경우, 항목 값이 모두 같다면 true
를 리턴한다. (Arrays.deepEquals(Object[] a, Object[] b)
와 동일)
3. 해시코드 생성 ( hash(), hashCode()
)
Objects.hash(Object...values)
메소드는 매개값으로 주어진 값들을 이용해서 해시 코드를 생성하는 역할을 하는데,
주어진 매개값들로 배열을 생성하고 Arrays.hashCode(Object[])
를 호출해서 해시코드를 얻고 이 값을 리턴한다.
이 메소드는 클래스 hashCode()
를 재정의할 때 리턴값을 생성하기 위해 사용하면 좋다.
클래스가 여러 가지 필드를 가지고 있을 때 이 필드로부터 해시코드를 생성하게 되면 동일한 필드값을 가지는 객체는 동일한 해시코드를 가질 수 있다.
@Override
public int hashCode() {
return Objects.hash(field1, field2, field3);
}
Objects.hashCode(Object o)
는 매개값으로 주어진 객체의 해시코드를 리턴하기 때문에 o.hashCode()
의 리턴값과 동일하지만, 매개값이 null
이면 0
을 리턴한다는 점은 다르다.
4. 널 여부 조사 ( isNull(), nonNull(), requireNonNull()
)
Objects.isNull(Object obj)
는 매개값은null
일 경우true
를 리턴한다.- 반대로
nonNull(Object obj)
는 매개값이not null
일 경우true
를 리턴한다. requireNonNull()
는 다음 세 가지로 오버로딩되어 있다.
- 첫 번째 매개값이
not null
이면 첫 번째 매개값을 리턴하고,null
이면 모두NullPointerException
을 발생시킨다.
- 두 번째 매개값은
NullPointerException
의 예외 메시지를 제공한다.
- 첫 번째 매개값이
5. 객체 문자 정보 ( toString()
)
Objects.toString()
은 객체의 문자 정보를 리턴하는데, 다음의 두 가지로 오버로딩되어 있다.
첫 번째 매개값이
not null
이면toString()
으로 얻은 값을 리턴하고,null
이면"null"
또는 두 번째 매개값인nullDefault
를 리턴한다.
[ 참고자료 ]
이것이 자바다 책
Author And Source
이 문제에 관하여([Java] 기본 API 클래스 ②), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mmy789/Java-기본-API-클래스-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)