자바에서 Object 타입 값을 String으로 변환하는 이 두 방법에 차이점이 있다.
타입 캐스팅 => (String) Value
명시적으로 value가 실제로 String타입이거나 String의 하위 클래스여야 한다.
value가 String이 아니면 ClassCastException이 발생하게 된다.
String.valueOf(value)
타입 캐스팅보다 더 안전한 방법으로, value의 실제 타입에 상관없이 String을 반환해 준다.
문제는 value가 null이라면 문자열 "null"을 반환한다.
내부적으로 value가 null이 아니라면 value.toString()을 호출한다.
타입 캐스팅을 할 때 ClassCastException을 방지하려면 캐스팅하기 전에 캐스팅할 타입과 맞는지 먼저 확인 후에 캐스팅하면 된다.
instanceof를 사용하면 안전하게 변환할 수 있다.
String.valueOf(value)에서 문자열 "null" 반환의 문제점이 있다.
실제 null 참조와 문자열 "null"을 구분하기가 어려워진다.
그래서 추가 코드에서 문자열을 처리할 때 "null" 여부를 계속 확인해주어야 한다.
데이터베이스나 파일에 "null"로 문자열이 저장될 수가 있다.
그래서 문제가 생기지 않게 방지하려면 미리 null여부를 검증하고 처리해 주는 로직을 사용하거나 Object.toString()을 사용해서 null일 경우 다른 문자열로 처리하는 방법을 사용할 수 있다.
'기술면접' 카테고리의 다른 글
페이징 쿼리 (0) | 2025.04.23 |
---|---|
낙관적 락 & 비관적 락 (0) | 2025.04.22 |
트라이 자료구조 (0) | 2025.04.10 |
OneToOne관계에서 Lazy Loading (0) | 2025.04.08 |
try-with-resources (0) | 2025.04.07 |