ホームページ >Java >&#&チュートリアル >Java 8 以降で Long を Int に安全にキャストするにはどうすればよいですか?
Java での Long から Int への安全なキャスト (Java 8 用に更新)
Java では、long から int へのキャストにより潜在的に次のような結果が生じる可能性があります。データ損失の場合。この懸念に対処するには、安全で慣用的なアプローチが不可欠です。
Java 8 の Math.toIntExact() メソッド
Java 8 より前では、安全にキャストするために推奨されていたメソッドLong から 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() メソッドが導入されています。発生オーバーフロー時会抛出ArithmeticException:
<code class="java">import static java.lang.Math.toIntExact; long foo = 10L; int bar = toIntExact(foo);</code>
Java 8 の追加のオーバーフロー安全メソッド
toIntExact() に加えて、Java 8 では他のいくつかのオーバーフローが導入されました。 -「exact」で終わる安全なメソッド。これらのメソッドは、潜在的なオーバーフローをチェックしながら加算、減算、否定、減分などの演算を実行します。
Math.toIntExact を利用する() およびこれらの追加のオーバーフロー安全メソッドを使用すると、情報を失うリスクを負うことなく、long 値を int に安全にキャストし、算術演算を実行できます。
以上がJava 8 以降で Long を Int に安全にキャストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。