반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SQL Mapper
- contiune
- 캡슐화
- 프로그래머스 붕대 감기
- 입출력
- 오블완
- java
- over()
- 객체지향
- hackerrank
- 쿠키
- 티스토리챌린지
- break 사용법
- 자바의 정석
- 자바의정석
- 중첩 break
- 혼공얄코
- continue 사용법
- 프로그래머스
- 붕대 감기 자바
- 다형성
- CPU
- spring security 설정
- 오버라이딩
- 멀티프로세싱
- spring security
- 리눅스
- 붕대 감기
- 오버로딩
- 멀티태스킹
Archives
- Today
- Total
쉽게 쉽게
Map에 있는 값 형변환하기 본문
반응형
1. 이슈
페이징을 구현하는 과정에서 Map에 있는 값을 int로 가져와서 사용해야 하는 일이 있었다.
그러나 int로 강제 형변환해서 사용하면 될 거라 단순하게 생각했지만 오류가 발생했다.
int current_page = (Integer)map.get("current_page");
-- java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 발생
이를 올바르게 해결하려고 했다.
2. Map에 있는 값 형변환하기
첫번째로 Stiring -> int로 전환하여 사용하려 했다.
int current_page = Integer.parseInt((String)map.get("current_page"));
-- java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 발생
그러나 이 또한 casting 오류가 발생했다. (실패)
두 번째로 Stirng.valueOf를 활용하여 변환 후 이를 다시 int로 전환했다.
int x = Integer.parseInt(String.valueOf(map.get("current_page")));
이 방법은 casting 오류 없이 성공했다.
사용된 메서드를 살펴보자면
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
Integer.parseInt() 메서드는 매개변수를 String으로 받는다.
때문에 Object값을 먼저 String으로 변환하고 이를 다시 int로 출력할 수 있다.
String.valueOf() 메서드를 통해서 Object를 String으로 변환을 시켜줬다.
하지만 매개변수가 String으로 들어가면 되기 때문에 toString()을 사용하여 진행해도 오류가 발생하지 않는다.
int current_page = Integer.parseInt(map.get("current_page").toString());
그러나 변경하고자 하는 Object가 null인 경우에 결과가 달라진다.
toString()과 같은 경우 Null PointerException(NPE)을 발생시키지만
valueOf는 "null"이라는 문자열로 처리한다.
즉 정리하면
- String.valueOf() - 파라미터가 null이면 문자열 "null"을 만들어서 반환
-
toString() - 대상 값이 null이면 NPE를 발생시키고 Object에 담긴 값이 String이 아니어도 출력
NPE가 나타나는 것보다 null값이 반환되어 표시되는 것이 훨씬 디버그하기 좋기때문에 valueOf를 사용하는 것을 추천한다.
참고
https://swjeong.tistory.com/146
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
반응형
'개발공부 > Java' 카테고리의 다른 글
[Java] 약수의 개수 구하기 (0) | 2024.09.15 |
---|---|
[Java] FILE 업로드(다중) (0) | 2024.04.28 |
입출력I/O (0) | 2023.03.31 |
스트림 (0) | 2023.03.31 |
람다식 (0) | 2023.03.29 |