Do You Eat Rice?

2014/05/06

Java Null Cast

데이터 입출력 할때마다 매번 햇갈린다...

Object 를 int, long, 등등의 primitive type 로 형변환 할때 혹시 Object 가 Null 일경우
primitive type 중에 Cast 가능한 경우는 String 만 가능하다.
왜냐 하면 String 만 Class 이기 때문에...
  1. String str = (String) null;
  2. long lon = (int) null;
  3. boolean boo = (boolean) null;
  4. double dou = (double) null;
이렇게 놓고 보면 당연히 1번만 Compile 가능 하고 2,3,4 번은 Compile 실패
하지만 이게 실제 프로그래밍에서는 저런 경우는 없으니까...

Object obj = null;
  1. String str = (String) obj;
  2. long lon = (int) obj;
  3. boolean boo = (boolean) obj;
  4. double dou = (double) obj;
이러면 모두 Compile 이 가능 해진다. Runtime 할때 NullPointException 자주 발생한다.
이게 정말 단순하고 기초적인 거지만 왜 자꾸 오류를 범하게 되는걸까?

그래서 보통은 단순하게게 할려고 String 으로 강제 형변환 한다음
apache-jakarta-commons-lang.jar 이용해서 Cast 을 하는됭

Object obj = null;
  1. String str = StringUtils.trimToEmpty((String)obj);
  2. long lon = NumberUtils.toLong(obj + "");
  3. boolean boo = BooleanUtils.toBoolean(obj + "");
  4. double dou = NumberUtils.toDouble(obj + "");
이걸 출력 해보면
str : 
lon : 0
boo : false
dou : 0.0

그러다 보니 DB 설계 할때 고민 하는 생각이 그냥 몰빵 varchar 로 만들어 하다가
아니지 아니지 DB 작업 할때 어떻게 할려고...


덧, obj+"" 결과값이 문자열 null 나오는구나 이것도 재미있네

list of articles