자바에서 안전하게 long을 int로 형변환하는 방법이 뭔가요?


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;
}

이건 제가 구현해본것입니다.

  • 2016년 01월 21일에 작성됨

조회수 799


1 답변


좋아요
0
싫어요
채택취소하기

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) 이렇게요.
  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close