long から int へのキャスト時の切り捨てエラーの回避
Java でlong 値を int に変換する場合、変換が情報の損失にはつながりません。これを実現する 1 つの方法は、次の実装で示されているように、明示的なチェックを行うことです。
<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()
このメソッドは、オーバーフローが発生したときに ArithmeticException をスローすることで、long から int への安全な変換を可能にします。
<code class="java">import java.lang.Math; ... long foo = 10L; int bar = Math.toIntExact(foo);</code>
Java 8 には、同様の "exact" メソッドも含まれていますさまざまな算術演算で精度を確保し、予期せぬ精度の損失を回避します:
これらのメソッドを利用することで、開発者は自信を持って long をキャストできます。データ損失やオーバーフローによる実行時例外のリスクなしに、値を int に変換できます。
以上がJava で long を int に安全に変換する方法: `toIntExact` と明示的チェック?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。