Java에서 Long을 Int로 안전하게 캐스팅(Java 8용으로 업데이트됨)
Java에서 long을 int로 캐스팅하면 잠재적으로 다음과 같은 결과가 발생할 수 있습니다. 데이터 손실. 이러한 문제를 해결하려면 안전하고 관용적인 접근 방식이 필수적입니다.
Java 8의 Math.toIntExact() 메서드
Java 8 이전에는 안전하게 캐스팅하는 데 권장되는 방법입니다. int에 대한 long은 잠재적인 정보 손실에 대한 결과를 확인하는 것이었습니다. 여기에는 캐스트 결과를 원래의 long 값과 비교하는 작업이 포함됩니다.
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;
}
그러나 Java 8 이상에서는 Math.toIntExact()방법이 있습니다.
import static java.lang.Math.toIntExact; 긴 푸 = 10L; int bar = toIntExact(foo);import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
Java 8의 추가 오버플로 방지 메서드 Java 8에서는 toIntExact() 외에도 몇 가지 다른 오버플로 방지 메서드를 도입했습니다. "정확하다"로 끝나요. 이러한 메서드는 잠재적인 오버플로를 확인하면서 더하기, 빼기, 부정 및 감소와 같은 작업을 수행합니다.
Math.incrementExact(long)부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3