자바에서 안전하게 long을 int로 형변환하는 방법이 뭔가요?
조회수 11073회
long에서 int로 형변환할때 데이터 손실없이 하는 가장 좋은 방법이 뭔가요?
public static int safeLongToInt(long l) {
int i = (int)l;
if ((long)i != l) {
throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
}
return i;
}
이건 제가 구현해본것입니다.
1 답변
-
Java 8에서 새로운 메소드가 추가됐는데요.
import static java.lang.Math.toIntExact; long foo = 10L; int bar = toIntExact(foo);
오버플로우가 나면 ArithmeticException라는 에러를 던집니다. Java8에서 이런 오버플로우에 안전한 메소드가 추가되었는데 다 끝에 exact로 끝납니다.
- Math.incrementExact(long)
- Math.subtractExact(long, long)
- Math.decrementExact(long)
- Math.negateExact(long),
- Math.subtractExact(int, int) 이렇게요.
댓글 입력