일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 객체지향
- spring security
- spring security 설정
- 리눅스
- 오버로딩
- SQL Mapper
- 멀티프로세싱
- CPU
- 자바의 정석
- 멀티태스킹
- sec태그
- hackerrank
- spring security 로그인정보 가져오기
- over()
- mvc 구성요소
- 쿠키
- 오블완
- 캡슐화
- 티스토리챌린지
- 다형성
- 혼공얄코
- @modelattibute
- java
- 입출력
- 로그인정보 가져오기
- charset 변경
- 자바의정석
- 오버라이딩
- mvc 동작
- 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인 경우에 결과가 달라진다.
- String.valueOf() - 파라미터가 null이면 문자열 "null"을 만들어서 반환
-
toString() - 대상 값이 null이면 NPE를 발생시키고 Object에 담긴 값이 String이 아니어도 출력
참고
Map<String, Object>의 안에 Object를 int로 바꾸는 방법
Spring Tool Suite 4 springboot 에서 PostgerDB를 이용하여 사용자의 로그인 요청이 오면, 아이디와 패스워드를 확인하여 결과값을 반환하기 위함. ※ UserRepository (JPA extends)는 작성되어있다는 가정 작성한
mamm.tistory.com
https://swjeong.tistory.com/146
[Java] toString()과 String.valueOf()의 차이점
두 메소드 모두 Object의 값을 String으로 변환하지만 변경하고자 하는Object가 null인 경우 다르다.toString()과 같은 경우 Null PointerException(NPE)을 발생시키지만 valueOf는 "null"이라는 문자열로 처리한다.
swjeong.tistory.com
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |

'개발공부 > 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 |