하루하루1
789
2021-08-10 10:32:22
6
179

map에서 null 체크


매퍼에서 받아온 값을 HashMap에 저장하고 있는데

데이터 유무를 isEmpty 로 구분해주었습니다.

그런데 값이 null인데  NullPointerException이 뜨네요..

이유를 알 수 있을까요?

0
  • 답변 6

  • 포기해..
    1k
    2021-08-10 10:34:53

    HashMap 자체에 리턴받은 값이 null 이면 isEmpty를 못쓰죠


  • 애리나
    212
    2021-08-10 11:27:02

    isEmpty -> 길이가 0인가? 객체가 null이면 NPE

  • 팩트폭행범
    2k
    2021-08-10 13:22:41 작성 2021-08-10 13:23:08 수정됨

    String a =(String) map.get("key");


    이렇게해서 a를 비교해보세여

    방법은여러가지

  • mr.hongs
    275
    2021-08-10 13:25:06

    아파치에서 널 값을 커버해주는 유틸이 있습니다.


    org.apache.commons.lang3.ObjectUtils 임포트 하신뒤


    ObjectUtils.isEmpty( obj );



  • HJOW
    3k
    2021-08-10 15:20:28 작성 2021-08-10 15:20:52 수정됨

    map이 아예 비어 있는 게 아니라

    어떤 키로 값이 null인 데이터가 들어가 있는 상황인 것 같습니다.


    null 또한 데이터 이기 때문에 map을 비어있다고 간주하지 않습니다.

    isEmpty() 결과는 false가 되지만, map에서 키를 꺼내면 null이 나오겠죠.

  • mr.hongs
    275
    2021-08-13 14:58:20

    해당 키를 꺼낼때가 문제라면

    MapUtils.getObject( key ) 를 통해서 안전하게 Null Safety가 됩니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.