본문 바로가기
Language/java

java.lang 패키지(java.util.Objects클래스)

by gamxong 2022. 7. 14.

 

java.util.Objects클래스

 

: Object클래스의 보조 클래스로 Math클래스처럼 모든 메서드가 'static'이다.

: 객체의 비교나 'null check'에 유용

 

isNull()

: 해당 객체가 널인지 확인해서 null이면 true, 아니면 false 반환

 

nonNull()

: isNull()과 정확히 반대의 일을 한다.

 

static boolean isNull(Object obj)
static boolean nonNull(Object obj)

 

requireNonNull()

: 해당 객체가 널이 아니어야 하는 경우에 사용

: 객체가 널이면, NullPointerException을 발생

 

void setName(String name) {
    if(obj==null) new NullPointerException("name must not be null.");
    
    this.name = name;
}

// same

void setName(String name) {
    this.name = Objects.requireNonNull(name,"name must not be null.");
}

 

Compare()

: 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환

static int compare(Object a, Object b, Comparator c)

 

equals()

: null검사를 하지 않아도 된다는 장점

 

 

deepEquals()

: 객체를 재귀적으로 비교하기 때문에 다차원 배열의 비교도 가능

 

String[][] str2D = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};

System.out.println(Arrays.equals(str2D, str2D2));  // false
System.out.println(Arrays.deepEquals(str2D, str2D2));  // true

 

toString()

: 내부적으로 널 검사하는 것이 추가

static String toString(Object o)
static String toString(Object o, String nullDefault)

★ 두 번째 메서드는 o가 널일 때, 대신 사용할 값을 지정할 수 있음.

 

hashCode()

: 내부적으로 널 검사하는 것이 추가, 널 일때는 0을 반환

static int hashCode(Object o)
static int hash(Object... values)

 

★ static import문을 사용했음에도 불구하고 Object클래스의 메서드와 이름이 같은 것들은 충돌

     ▶ 클래스의 이름을 붙여줄 수밖에 없다.

 

 

댓글