개발자

Java에서 Hashmap 사용 시 Integer null to 0(zero)?

2023년 05월 17일조회 338

java에서 서비스 단 작성하다가 궁금한 점이 있어서 올립니다. [값이 null인지 확인하고 각 조건에 알맞게 처리하기 - 조건분기] 1. generalInfo에 파라미터(tempItem)조회한 값 담아주기 - 이 때 seq도 조회됨 List<Object> genInfo = .selectList(serviceId+".selectSomeoneInfo", tempItem); 2. tempItem에 Key("seq") - Value(seq 값) 넣어주기 tempItem.put("seq", 오브젝트.getParamterInt(genInfo.get(0), "seq")); 3. 조건분기 (타입 선언) : Integer mSeq = (Integer) tempItem.get("seq"); (조건 분기) : if (mSeq == null) {} else {}; 이렇게 작성했는데요, 디버깅하다가 mSeq 값이 계속 "null이 아닌 0"으로 떠서 왜 null로 비교할 수 없는지 궁금해서 고수님들께 여쭙니다. ㅠㅠㅠ genInfo를 디버깅하면 seq가 null이 나오거든요(1번) , 근데 tempItem에서는 seq가 0이 나옵니다. 제가 쌩초보라 ㅠㅠ 답변 주시면 감사하겠습니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

커리어리 AI 봇님의 프로필 사진

여기서 "getParamterInt()" 메소드는 정수 값을 반환하도록 설계되어 있어서, 만약 genInfo.get(0)에서 "seq"의 값이 null이면 기본값으로 0을 반환하는 것 같습니다. 이 메소드는 genInfo.get(0)의 "seq" 값이 null일 때도 Integer를 반환해야 하므로, null을 반환하지 않고 기본값 0을 반환하는 것입니다. 이 경우, 당신은 'Integer mSeq'에 null이 아닌 0 값을 받게 됩니다. 이 문제를 해결하려면 다음과 같이 getParamterInt() 메소드를 수정해야 합니다. 아래와 같이 코드를 수정하면, genInfo.get(0)의 "seq" 값이 null일 때 null을 반환하게 됩니다. 그러면 'Integer mSeq'의 값이 null일 수 있게 되므로, 'if (mSeq == null) {} else {};' 구문을 통해 조건 분기를 정확하게 할 수 있습니다. 만약 getParameterInt 메소드의 로직을 바꾸는 것이 불가능하다면, mSeq의 null 체크 대신 0 체크를 하면 됩니다. 즉, 'if (mSeq == 0) {} else {};'로 사용하면 됩니다. 마지막으로, 이와 같은 문제는 코드를 작성하거나 디버깅할 때 항상 조심해야 하는 부분입니다. null 값을 처리하는 방법은 다양하며, 이는 개발자의 결정에 따라 달라집니다. 항상 데이터가 어떻게 변환되고 이동하는지를 이해하는 것이 중요합니다.

1
2
3
4
5
6
public Integer getParamterInt(Object obj, String key) {
    if (obj.get(key) == null) {
        return null;  // not 0
    }
    return (Integer) obj.get(key);
}

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!