본문 바로가기

디버깅

[Java] .toString() 보다는 String.valueOf()를 사용하자.. (Null Point Exception)

반응형



자바의 단점이랄까.. 태생(?)의 문제점을 꼽으라면 아마도 Null 포인트 Exception을 많이 꼽으실겁니다. 아무리 신경쓰고 잘 처리 한다고 해도.. 자바를 처음 배울때부터 능숙해져도 널포인트는 자바 개발자라면 땔수없는 (ㅠㅠ) 그런 오류겠지요.

특히 String에서 값의 여부를 판단하려면 보통 이런 코드를 많이 작성하게 되죠. (StringUtil 같은 Class를 만들지 않았다면)

1
2
3
4
5
6
String data;
 
if (data != null && "".equals(data)){
    'Something'
}
 
cs


와 같은 짓을 해야하는 불편도 있습니다.


여하튼 이번 포스팅에서 적어보려고 하는건 값을 String에 담거나 혹은 담기전에 캐스팅에 관한 이야기입니다.

웹서버에서 세션을 이용한 프로그래밍을 조금 하고 있었는데.


session.getAttribute("data"); 처럼 세션에서 값을 가져올때 object 타입이므로 형변환을 해주어야 하는데.


습관적으로


session.getAttribute("data").toString(); 으로 처리를 하니.. 여지없이 Null Point Exception이 반겨줍니다.

(String) session.getAttribute("data")  으로 강제 형변환을 하는 방법도 있지만.. 확실히는 몰라도

초반에 자바를 배울때 강제 형변환을 되도록 쓰지 말라는 (??.. 이유와 근거는 모르겠습니다.)

이야기를 듣고 나서부터 되도록 강제 캐스팅을 피하게 되었는데요. (웃긴건 안드로이드를 자바로 코딩하면 강제 캐스팅을 정말 셀수없이 하게 되죠..)


여하튼 String으로 캐스팅을 하면서 Null Point Exception에서 해방되려면

String.ValueOf(data); 처럼 String.ValueOf 함수를 사용하라는군요.

apache 에서 StringUtils 를 이용한 방법도 있지만.. 일단은 자바 내에서는 저렇게 해결을 하면 되듯합니다.



반응형