JavaA2Z

KAB-studio > プログラミング > JavaA2Z > instanceofとは

instanceof

日本語 実体は
英語 this instance of that class
ふりがな いんすたんすおぶ
フリガナ インスタンスオブ

解説

本当のインスタンスを調べる予約語
演算子のように機能する予約語二項演算子のように機能し、「参照変数 instanceof クラス」という形式で使用することで、「参照変数」の参照するインスタンスが「クラス」のクラスかそのサブクラスであればtrueを、それ以外はfalseを返す。
インスタンスを調べるもののため、プリミティブ型には使用できない。
 
ポリモーフィズムにより、参照変数内に「インスタンスクラスが分からない」場合に使用することで、インスタンスクラスを調べることができる。
ただし、本来ポリモーフィズムは「どのように動作するのかをインスタンスに任せる」ものであり、それを「インスタンスクラスによって処理を変える」のは本末転倒である。便利な予約語ではあるが、この予約語を多用するようなプログラムはそもそもプログラムの構造が誤っていることを疑った方がいい。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java

public class Sample
{
    public static void main( String[] args )
    {
        Integer integer = new Integer( 100 );
        // instanceofで、インスタンスのクラスを調べます。
        boolean result = integer instanceof Integer;
        System.out.println( result );
        // true

        // スーパークラスと比較すると一致します。
        result = integer instanceof Object;
        System.out.println( result );
        // true

        // 本来、この予約語はポリモーフィズムと組み合わせて使います。
        Object object = integer;
        // このobject変数に入っているインスタンスのクラスを調べるために使います。
        result = object instanceof Integer;
        System.out.println( result );
        // true

        // このように、参照の型はObjectクラスですが、実際に入っているのは
        // Integerクラスのインスタンスへの参照だ、ということが分かります。

        result = object instanceof String;
        System.out.println( result );
        // false

        // このように、違うクラスを指定すればfalseが返ります。

        // 参照型とは全然関係ないクラスと比較するとコンパイルエラーになります。
        // result = integer instanceof String;
        // コンパイルエラー:
        // 非互換条件オペランド型 Integer と String

        // プリミティブ型には使えません。
        int i = 100;
        // result = i instanceof int;
        // コンパイルエラー:
        // トークン ")" に構文エラーがあります。正しくは "[" です。
    }
}
// Sample.java

public class Sample
{
    public static void main( String[] args )
    {
        Integer integer = new Integer( 100 );
        // instanceofで、インスタンスのクラスを調べます。
        boolean result = integer instanceof Integer;
        System.out.println( result );
        // true

        // スーパークラスと比較すると一致します。
        result = integer instanceof Object;
        System.out.println( result );
        // true

        // 本来、この予約語はポリモーフィズムと組み合わせて使います。
        Object object = integer;
        // このobject変数に入っているインスタンスのクラスを調べるために使います。
        result = object instanceof Integer;
        System.out.println( result );
        // true

        // このように、参照の型はObjectクラスですが、実際に入っているのは
        // Integerクラスのインスタンスへの参照だ、ということが分かります。

        result = object instanceof String;
        System.out.println( result );
        // false

        // このように、違うクラスを指定すればfalseが返ります。

        // 参照型とは全然関係ないクラスと比較するとコンパイルエラーになります。
        // result = integer instanceof String;
        // コンパイルエラー:
        // 非互換条件オペランド型 Integer と String

        // プリミティブ型には使えません。
        int i = 100;
        // result = i instanceof int;
        // コンパイルエラー:
        // トークン ")" に構文エラーがあります。正しくは "[" です。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/06
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。