자바에서 .compareTo() 메소드를 사용하려니 발생한 오류.
'Cannot invoke compareTo(int) on the primitive type int'
원인: primitive type은 클래스가 아니라 메소드를 호출할 수 없는데, 호출을 시도했기 때문.
오류가 발생하는 소스
1
2
3
4
5
6
7
8
9
|
// 숫자를 입력할 수 있는 vo가 있다고 가정
NumVo vo = new NumVo();
vo.setNumA(1);
vo.setNumB(1);
int result = vo.getNumA().compareTo(vo.getNumB());
// 결과: compareTo에서 오류 발생
|
cs |
오류를 해결하기 위해서는 2가지 해결 방법이 있다.
1. int 타입의 경우 compareTo 대싱 <, >, = 등으로 비교를 하면 된다.
1
2
3
4
5
6
7
|
// 숫자를 입력할 수 있는 vo가 있다고 가정
NumVo vo = new NumVo();
vo.setNumA(1);
vo.setNumB(1);
int result = vo.getNumA() > (vo.getNumB();
|
cs |
2. int를 클래스로 감싸주면 된다.
1
2
3
4
5
6
7
8
|
// 숫자를 입력할 수 있는 vo가 있다고 가정
NumVo vo = new NumVo();
vo.setNumA(1);
vo.setNumB(1);
Integer tmp = new Integer(vo.getNumA());
int result = tmp.compareTo(vo.getNumB());
|
cs |
그렇다면 int와 Integer의 차이는?
자바의 자료형은 크게 기본형(primitive type)과 참조형(referene type)으로 나뉜다.
기본형은 byte, int, long 등등으로 자바 객체를 사용하기 위해서 레퍼 클래스를 활용한다.
기본형 - wrapper class
byte - Byte
short - Short
int - Integer
long - Long
double - Double
그럼 이제 기본형도 참조형 처럼 사용할 수 있다.
'[개발] Programming > Java' 카테고리의 다른 글
자바 String, StringBuffer, StringBuilder 차이 점 (0) | 2020.04.07 |
---|---|
자바 현재 날짜, 시간 구하고 형식 지정 (getInstance, Date, currentTimeMillis) 하는 방법 (2) | 2019.12.29 |
자바 BigDecimal to int, 값 비교하는 방법 (0) | 2019.06.12 |
자바 문자열 비교 함수 compare(), compareTo() (0) | 2018.11.09 |
GC overhead limit exceeded, String 대신 StringBuilder 사용 등 해결 방법 (0) | 2018.11.09 |
댓글