728x90
반응형
String userId = requestMap.getOrDefault("userId", "").toString();
String userId = (String)requestMap.getOrDefault("userId", "");
서버 소스를 구현하다보면 타입변환하는 이 두가지 방법을 쉽게 접할 수 있다. 하지만 변한과 관련된 미묘한 동작 차이가 있다.
1. String userId = requestMap.getOrDefault("userId", "").toString();
- 이 소스에서 .toString()은 모든 객체에 적용 가능하고, 반환된 값이 어떤 객체라도 호출 할 수 있다. Integer, Double, null 등이 반환되더라도 .toString()을 호출 할 수 있다.
<예시>
Map<String, Object> requestMap = new HashMap<>();
requestMap.put("userId", 123); // `Integer` 타입 값 저장
String userId = requestMap.getOrDefault("userId", "").toString();
System.out.println(userId); // 출력: "123"
2. String userId = (String)requestMap.getOrDefault("userId", "");
- 반환된 값이 String이 아니면 ClassCastException이 발생한다. 꼭! 타입이 일치해야한다!
만약, requestMap에 지정된 값이 String이 아닌 다른 타입(ex: Integer)라면 캐스팅 오류가 발생하는 것이다.
Map<String, Object> requestMap = new HashMap<>();
requestMap.put("userId", 123); // `Integer` 타입 값 저장
String userId = (String) requestMap.getOrDefault("userId", "");
// ClassCastException 발생
3. 차이점
안전성 | 반환된 값이 어떤 타입이든 toString() 호출 가능 | 반환된 값이 String 타입이 아닌 경우 예외 발생 |
유연성 | 모든 타입에 대해 동작 | String 타입으로 제한 |
예외 상황 | null도 안전하게 처리 가능 (결과: "null") | null일 경우에도 문제 없음 |
명확성 | 타입 불일치가 있을 때 디버깅이 어려울 수 있음 | 값이 반드시 String 타입이어야 함을 보장 |
.toString() ➡ 값이 다양한 타입일 가능성이 있고, 이를 문자열로 변환하려는 의도라면 이 함수를 사용하는걸 추천한다!
(String) ➡ 값이 반드시 String 타입이어야 하는 경우에 사용하는 것을 추천한다! String 타입을 보장하기 때문이다.
728x90
반응형
'개발 이모저모' 카테고리의 다른 글
랜덤키 생성하기, SecureRandom() (0) | 2025.01.07 |
---|---|
StringUtils.hasText 함수 (0) | 2025.01.05 |
URI 컨트롤 , API 설계하기 (4) | 2024.12.19 |
코드 품질 (0) | 2023.06.20 |
pyautogui, for문을 이용해 원하는 페이지만큼 크롤링 하기 - 뉴스기사 가져오기 예제 2️⃣ (0) | 2022.12.08 |