Objects 클래스가 제공하는 유틸리티 메소드
포스트
취소

Objects 클래스가 제공하는 유틸리티 메소드

java 7에서 추가된 Objects 클래스의 유틸리티 메소드를 다음과 같이 활용할 수 있다.

객체를 생성할 때 null이 들어오는것을 걸러내기 위해 다음과 같이 코드를 짜는 경우가 많은데

`private void isSame (String str, String expected) {
    if (string != null || string.equals(expected)) {
        ...
    } 
}`

string != null || string.equals(expected) 부분에서 굳이 두 번 검사를 하는 이유는 stringnull인 경우 string.equals()에서 NullPointerException이 발생하기 때문이다.
Objects.equals(string, expected) 를 이용하면 익셉션 없이 의도한 대로 작동시킬 수 있다.

이렇듯 Objects 클래스의 상당수 유틸메소드들이 null이 들어올지도 모르는 입력에 대한 NullPointerException 방어용이나, 가독성을 위해 사용되는 경우가 많다.

그런데 그 중에는 반대로 null이 들어오면 익셉션을 발생시키도록 설계된 메소드도 있다.

`public LottoChecker(Lotto lotto) {
    this.lotto = Objects.requireNonNull(lotto);
}`

의존성 주입에서 봤던 이 코드를 다시 보자. Objects.requireNonNull(lotto)는 lotto가 null인 경우 바로 NullPointerException을 발생시키고, null이 아닌 경우에만 값을 받아들여 인스턴스가 생성될 수 있도록 한다.

This post is licensed under CC BY 4.0 by the author.

의존성 주입(Dependency Injection)

추상 클래스/상속과 인터페이스의 차이

Comments powered by Disqus.