
자바에서 Object 타입인 value를 String으로 타입 캐스팅하는 것과 String.valueOf()를 사용하는 것의 차이점은 무엇일까?
●자바에서 Object 타입인 value를 String으로 타입 캐스팅하는 것과 String.valueOf()를 사용하는 것의 차이점은 무엇일까?
두 방식 모두 String 타입으로 변환하는 것은 동일하지만, 동작 방식과 예외 처리에서 차이가 있음
(String) value로 타입 캐스팅 하는 것은 value가 String 타입이 아닌 경우 ClassCastException이 발생하며, value가 null인 경우 그대로 null을 반환하여 이후 메서드를 호출할 때 NullPointerException이 발생하며, 타입 캐스팅은 타입 안정성이 부족하기 때문에 캐스팅하는 타입이 확실할 때만 사용해야 함
Object intValue = 10;
String str1 = (String) intValue; // ClassCastException
Object nullValue = null;
String str2 = (String) nullValue; // null
str2.concat("maeilmail"); // NullPointerException
Object intValue = 10;
String str1 = String.valueOf(intValue); // "10"
Object nullValue = null;
String str2 = String.valueOf(nullValue); // "null"
str2.concat("maeilmail"); // "nullmaeilmail"
●타입 캐스팅할 때 ClassCastException을 방지하는 방법은 무엇이 있을까?
Object intValue = 10;
if (intValue instanceof String str) {
System.out.println(str);
} else {
// ...
}
●String.valueOf(null)이 "null"을 반환하는 것은 문제가 될 수도 있지 않을까?