더북(TheBook)

하지만 JDK 8부터 새 메서드 집합이 추가됐다. 이러한 메서드들은 BigInteger를 명시한 원시 타입으로 변환하다 잃어버린 정보가 있는지 확인한다. 잃어버린 정보를 찾으면 ArithmeticException을 던진다. 이러한 방식으로 코드는 변환 중에 어떤 문제에 부딪혔음을 알리고 유쾌하지 않은 상황을 방지한다.

longValueExact()intValueExact(), shortValueExact(), byteValueExact() 메서드가 여기에 속한다.

long nrExactLong = nr.longValueExact(); // 예상대로 동작한다
int nrExactInt = nr.intValueExact();    // ArithmeticException을 던진다

위 코드의 intValueExact()intValue()처럼 -1을 반환하지 않는다. 가장 큰 long 값을 int로 변환하다 잃어버린 정보를 ArithmeticException 타입의 예외를 통해 알린다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.