クラスExactConversionsSupport

java.lang.Object
java.lang.runtime.ExactConversionsSupport

public final class ExactConversionsSupport extends Object
値のテスト変換は、情報が失われても例外をスローしても結果が出る場合は正確です。 それ以外の場合は、不正確です。 一部の変換は、値に関係なく常に正確です。 これらの変換は、無条件に正確であると言われています。

たとえば、値10のintからbyteへの変換は、結果10が元の値と同じであるため、正確です。 対照的に、int変数iに値1000が格納されている場合、byteへの絞込みプリミティブ変換の結果は -24になります。 情報の損失が発生しました: 結果の大きさと符号は、元の値とは異なります。 したがって、値1000のintからbyteへの変換は不正確です。 最後に、byteからintへの拡大するプリミティブ変換は、常に数値の大きさに関する情報が失われずに成功するため、無条件に正確です。

このクラスのメソッドは、プリミティブ型からプリミティブ型への変換をテストする正確性チェックの実行時サポートを提供します。 これらのメソッドは、たとえば、Javaコンパイラ実装でinstanceofおよびパターン・マッチング・ランタイム実装のチェックを実装するために使用できます。 無条件で正確なテスト変換では、実行時に対応するアクションは必要ありません。そのため、これらの正確性チェックに対応するメソッドはここでは省略されます。

実行時変換では、テスト変換を適用する場合に情報が失われるかどうかがチェックされます。 浮動小数点プリミティブ型が関係し、テスト変換の値が符号付きゼロ、符号付き無限大またはNaNのいずれかである場合、これらのメソッドは次に従います:

  • 浮動小数点の負のゼロを整数型に変換することは、不正確であるとみなされます。
  • 浮動小数点NaNまたは無限大を整数型に変換することは、不正確であるとみなされます。
  • 浮動小数点NaN、無限大、または符号付きゼロを別の浮動小数点型に変換することは、正確であるとみなされます。

実装上のノート:
正確性チェックの中には、既存のメソッドのいずれかを使用して安全にリダイレクトできるテストを記述するものがあります。 (つまり、byteからcharへはisIntToCharExact(int)にリダイレクトし、shortからbytebyteにリダイレクトし、同様にshortからcharcharからbyteおよびcharからshortは、intをとる対応するメソッドへをisIntToByteExact(int)に))も省略されます。
Java言語仕様を参照してください:
「5.7.1 正確なテスト変換」
「5.7.2 無条件で正確なテスト変換」
「15.20.2 instanceof演算子」
導入されたバージョン:
23
  • メソッドの詳細

    • isIntToByteExact

      public static boolean isIntToByteExact(int n)
      intからbyteまでの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isIntToShortExact

      public static boolean isIntToShortExact(int n)
      intからshortへの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isIntToCharExact

      public static boolean isIntToCharExact(int n)
      intからcharへの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isIntToFloatExact

      public static boolean isIntToFloatExact(int n)
      intからfloatまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToByteExact

      public static boolean isLongToByteExact(long n)
      longからbyteまでの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToShortExact

      public static boolean isLongToShortExact(long n)
      longからshortまでの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToCharExact

      public static boolean isLongToCharExact(long n)
      longからcharまでの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToIntExact

      public static boolean isLongToIntExact(long n)
      longからintまでの完全性メソッド
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToFloatExact

      public static boolean isLongToFloatExact(long n)
      longからfloatまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isLongToDoubleExact

      public static boolean isLongToDoubleExact(long n)
      longからdoubleまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isFloatToByteExact

      public static boolean isFloatToByteExact(float n)
      floatからbyteへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isFloatToShortExact

      public static boolean isFloatToShortExact(float n)
      floatからshortへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isFloatToCharExact

      public static boolean isFloatToCharExact(float n)
      floatからcharへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isFloatToIntExact

      public static boolean isFloatToIntExact(float n)
      floatからintへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isFloatToLongExact

      public static boolean isFloatToLongExact(float n)
      floatからlongへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToByteExact

      public static boolean isDoubleToByteExact(double n)
      doubleからbyteまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToShortExact

      public static boolean isDoubleToShortExact(double n)
      doubleからshortへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToCharExact

      public static boolean isDoubleToCharExact(double n)
      doubleからcharへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToIntExact

      public static boolean isDoubleToIntExact(double n)
      doubleからintへの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToLongExact

      public static boolean isDoubleToLongExact(double n)
      doubleからlongまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue
    • isDoubleToFloatExact

      public static boolean isDoubleToFloatExact(double n)
      doubleからfloatまでの完全性メソッド
      実装要件:
      Doubleクラスの指定で定義された表現の等価性の概念に依存します。
      パラメータ:
      n - value
      戻り値:
      渡された値をターゲット・タイプに正確に変換できる場合にのみtrue