java 7에서 추가된 Objects 클래스의 유틸리티 메소드를 다음과 같이 활용할 수 있다.
객체를 생성할 때 null이 들어오는것을 걸러내기 위해 다음과 같이 코드를 짜는 경우가 많은데
`private void isSame (String str, String expected) { if (string != null || string.equals(expected)) { ... } }`
string != null || string.equals(expected)
부분에서 굳이 두 번 검사를 하는 이유는 string
이 null
인 경우 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이 아닌 경우에만 값을 받아들여 인스턴스가 생성될 수 있도록 한다.
Comments powered by Disqus.