본문 바로가기
Language/Java

[Java] Objects 클래스

by 계범 2022. 3. 8.

Objects클래스

object클래스의 보조 클래스로 모든 메서드가 'static'이다.

 

isNull(), notNull(), requireNonNull()

isNull()과 notNull()은 해당 객체가 null인지 아닌지를 boolean값으로 반환한다.

requireNonNull()은 해당 객체가 널이면, NullPointerException을 발생시킨다. 두번째 매개변수로 지정하는 문자열은 예외 메시지가 된다.

 

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

변경 후

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

 

Compare()

compare()는 대소비교 메서드로, 두 비교대상이 같으면 0, 크면 양수, 작으면 음수를 반환한다.

 

compare(Object a, Object b, Comparator c)

Comparator는 추후 정리 예정

 

equals()

Objects의 equals()는 Object의 equals()와 다르게 null검사를 하지 않아도 된다.

if(a ! = null && a.equals(b){
	//***
}

변경 후

if(Objects.equals(a,b){
	//***
}

내부코드

public static boolean equals(Object a, Object b){
	return (a==b) || (a != null && a.equals(b));
}

만약 a와 b가 둘다 null이면 참을 반환한다.

 

deepEquals()

2차원 문자열 배열을 비교할 때 사용된다.

String[][] str2d = new String[][] {{"aaa","bbb"} , {"AAA","BBB"}};
String[][] str2d2 = new String[][] {{"aaa","bbb"} , {"AAA","BBB"}};

Objects.deepEquals(str2d, str2d2); // true반환
// str2d와 str2d2가 문자열 리터럴들을 참조하는 형태기때문에 true가 반환

 

hashCode()

위와 마찬가지로 null 검사를 한 후 Object클래스의 hashCode() 호출.

널 일때는 0반환.

 

참조

'Java의 정석' 책

댓글