ホームページ  >  記事  >  Java  >  Java で long を int に安全に変換する方法: `toIntExact` と明示的チェック?

Java で long を int に安全に変換する方法: `toIntExact` と明示的チェック?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 22:11:03180ブラウズ

How to Safely Convert a long to an int in Java:  `toIntExact` vs Explicit Checking?

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" メソッドも含まれていますさまざまな算術演算で精度を確保し、予期せぬ精度の損失を回避します:

  • Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math .decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)

これらのメソッドを利用することで、開発者は自信を持って long をキャストできます。データ損失やオーバーフローによる実行時例外のリスクなしに、値を int に変換できます。

以上がJava で long を int に安全に変換する方法: `toIntExact` と明示的チェック?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。