Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[Spring] Safe navigation operator(?.) in SpEL(Spring Expression Language) Computer & Program

Elvis operator를 찾는 도중 우연히 아래에 있어서 Safe navigation operator가 눈에 들어왔다. 살펴보니 겁나 멋진 기능이네 TㅅT

아래와 같은 코드가 있을 때 user나 user의 address가 null인 경우 NullPointerException이 발생한다.

User user = User.find("admin");        // "admin" 이라는 사용자가 없는 경우
String streetName = user.getAddress().getStreet();

때문에 null이 발생할 수 있는 경우 항상 null 체크가 필요하다. 매번 이걸 확인하기 힘들고, 빠뜨리기도 쉽고, 코드도 길어져서 지저분해진다. 헌데 Save navigation operator를 사용하면 겁나 멋지게 한 줄로 쓰고 나중에 null 체크 한 번만 해보면 된다. 왜 이런 기능이 여태 없던거지?? TㅅT 불편한 줄 알면서도 무의식 중에 그냥 쓰고 있었던게 왠지 바보같네 ㅋㅋ

아마도 이런식이 되겠지?? (address 객체 변수는 알아서 처리하고..)
User user = User.find("admin");
String streetName = null;
if(null != user)
    if(null != user.getAddress())
        streetName = user.getAddress().getStreet();


그럼 Safe navigation operator를 써서 멋지게 바꿔보자. SpEL로 Safe navigation operator를 쓰면 이렇게 바꿀 수 있다.
user?.address?.street


역시 Elvis operator와 마찬가지로 Groovy의 Safe navigation operator에서 가져왔다고 한다. 역시 Groovy 겁나 멋져 TㅅT

핑백

덧글

댓글 입력 영역

Google AdSense (text/image)