Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

型キャスト

変数のデータ型を変換する – 型キャスト
(type)var
type:データ型
var:変数名

データ型を変換することを型キャストと言います。
まず、基本型では、小さな型を大きな型に代入(たとえば、int型の値をlong型に代入)することは可能です。大は小を兼ねるのです。これを拡大変換と言います。
しかし、その逆(縮小変換)はそのままでは不可です。long型の値がint型に格納できるとは限らないからです。
そこで、明示的にlong型の値をint型にキャスト(変換)する必要があります。キャストには、対象の変数の直前に「(型名)」を付与するだけです。

Cast.java

package com.example.mynavi.basic;

public class Cast {
  public static void main(String[] args) {
    long l = 50;
    int i = (int)l;
    System.out.println(1+i);
  }
}

同じく、クラス型/インターフェイス型の値もキャストできます。クラス型/インターフェイス型がキャストできるのは、代入する型が代入先の型の派生型、または実装型でなければなりません。たとえば、HamsterクラスがAnimalクラスaのサブクラスであれば、以下のようなキャストが可能です。

Animal a = new Hamster();
Hamster h = (Hamster)a;

ただし、以下のようなコードは不可です。

Animal c = new Cat();
Hamster h = (Hamster)c;	// キャストエラー

変数cはAnimal型ですが、その実体はCatオブジェクトであるからです。
このようなエラーを防ぐためには、instanceof演算子を利用してください。instanceof演算子は、オブジェクトが指定されたクラス、またはスーパークラスのインスタンスであるかを判定します。クラス型のキャストにあたっては、あらかじめinstanceof演算子で実際の型を判定しておくことで、安全にキャストを実行できます。

Animal c = new Cat();
if (c instanceof Hamster) {
  Hamster h = (Hamster)c;
}
基本文法
変数を宣言する
定数を宣言する – finalキーワード
データ型
型キャスト
演算子
コメント

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職