Java에서 Long을 Int로 안전하게 캐스팅(Java 8용 업데이트)
Java에서 long을 int로 캐스팅하면 잠재적으로 결과가 발생할 수 있습니다. 데이터 손실. 이러한 문제를 해결하려면 안전하고 관용적인 접근 방식이 필수적입니다.
Java 8의 Math.toIntExact() 메서드
Java 8 이전에는 안전한 캐스팅을 위해 권장되는 방법입니다. int에 대한 long은 잠재적인 정보 손실에 대한 결과를 확인하는 것이었습니다. 여기에는 캐스트 결과를 원래의 긴 값과 비교하는 작업이 포함됩니다.
<code class="java">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; }</code>
그러나 Java 8 이상에서는 更为简洁有效적 방법已被引入:Math.toIntExact()방법법。此방법이 있습니다.发生溢 Out时会抛takeArithmeticException:
<code class="java">import static java.lang.Math.toIntExact; long foo = 10L; int bar = toIntExact(foo);</code>
Java 8의 추가 오버플로 안전 메서드
Java 8에서는 toIntExact() 외에도 여러 가지 다른 오버플로를 도입했습니다. - "정확한"으로 끝나는 안전한 방법. 이러한 메서드는 잠재적인 오버플로를 확인하면서 더하기, 빼기, 부정 및 감소와 같은 작업을 수행합니다.
Math.toIntExact 활용 () 및 추가 오버플로 방지 메서드를 사용하면 긴 값을 int로 안전하게 캐스팅하고 정보 손실 위험 없이 산술 연산을 수행할 수 있습니다.
위 내용은 Java 8 이상에서 Long을 Int로 안전하게 캐스팅하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!