HOWTO · Java

Java で Object を int に変換する方法

Java で Object から int を取得する 4 つの方法を学びます:Integer をキャストする、Number.intValue() を使用する、Integer.intValue() を呼び出す、または整数テキストを解析する。

このページの内容

Java で Object から int を取得するには、まず値の実行時型を特定します。Integer が含まれている場合はキャストしてアンボックスします。別の数値ラッパーの場合は Number.intValue() を使用します。または、Integer.parseInt() でそのテキストを解析します。これらのアプローチは互換性がありません。Object 参照だけでは数値であることは保証されません。
型変換は Java チュートリアル のトピックグループの一つで、変換のガイドが一か所にまとめられています。

以下の例は、提供された証拠の中では実行されていません。その記載された値は、示された Java 変換から導かれます。

Integer ラッパークラスを使用して Java で Object を int に変換する

オブジェクトに Integer が含まれている場合、キャストしてから int に代入すると、ラッパー型の確認と値のアンボックスの両方が行われます。以下のメソッドは、提供されたオブジェクトに対して値 123 を返します。

public class Main {
  public static int objectToInt(Object obj) {
    return (Integer) obj;
  }

  public static void main(String[] args) {
    Object obj = Integer.valueOf(123);
    int value = objectToInt(obj);
    System.out.println("The converted int is " + value);
  }
}

キャストには、実行時の値が Integer である必要があります。別のクラスでは ClassCastException が発生します。obj が null の場合、キャストは null を生成し、それを int にアンボックスすると NullPointerException が発生します。入力が保証されていない場合は、値を確認するか、これらのケースを処理してください。

Number と intValue() 関数を使用して Java で Object を int に変換する

オブジェクトに Integer、Long、Double などの異なる数値ラッパー型が含まれる可能性がある場合は、Number を使用します。実行時の値は依然として Number でなければなりません。intValue() は int を返します。int の範囲外の値や小数部分を持つ値の場合、変換で情報が失われることがあります。この例では、返される値は 123 です。

public class Main {
  public static int objectToInt(Object obj) {
    return ((Number) obj).intValue();
  }

  public static void main(String[] args) {
    Object obj = Double.valueOf(123.9);
    int value = objectToInt(obj);
    System.out.println("The converted int is " + value);
  }
}

これは数値を変換するものであり、"123" のような文字列を解析するものではありません。Number でないオブジェクトは Number にキャストできません。

Integer と intValue() 関数を使用して Java で Object を int に変換する

この形式は、実行時の値が Integer であるオブジェクト専用です。intValue() でアンボックスのステップを明示的に示していますが、キャストした Integer を直接 int に代入しても通常は同じ処理が自動的に行われます。このメソッドは、この入力に対して 123 を返します。

public class Main {
  public static int objectToInt(Object obj) {
    return ((Integer) obj).intValue();
  }

  public static void main(String[] args) {
    Object obj = Integer.valueOf(123);
    int value = objectToInt(obj);
    System.out.println("The converted int is " + value);
  }
}

直接キャストの場合と同様に、実行時型が異なる場合は ClassCastException が発生し、null の Integer に対して intValue() を呼び出すと NullPointerException が発生します。他の数値ラッパー型が有効な入力である場合は、より広い Number 形式を使用してください。

Integer.parseInt() 関数を使用して Java で Object を int に変換する

解析は、10 進整数を表すテキスト用です。toString() でオブジェクトをテキストに変換し、その文字列を Integer.parseInt() に渡します。文字列 "123" の場合、解析により int 値 123 が返されます。

public class Main {
  public static int objectToInt(Object obj) {
    return Integer.parseInt(obj.toString());
  }

  public static void main(String[] args) {
    Object obj = "123";
    int value = objectToInt(obj);
    System.out.println("The converted int is " + value);
  }
}

テキストは、int の範囲内の有効な 10 進表現でなければなりません。そうでない場合、Integer.parseInt() は NumberFormatException をスローします。これは、数値オブジェクトをキャストするのではなく、テキストを解析します。null オブジェクトも toString() を通じてテキストを提供できません。

結論

Object が実際に含む内容に基づいて変換を選択してください。Integer をキャストしてアンボックスする、別の数値ラッパーには Number.intValue() を使用する、そのテキストが整数を表す場合は Integer.parseInt() を使用します。オブジェクトに Integer が含まれていることがわかっている場合、直接キャストが最も簡単なアプローチです。実行時型と null 可能性が保証されていない場合は、それらを検証または処理してください。