Javaプログラムにおけるinstanceof演算子の使い方【初心者向け】

初心者向けにJavaのinstanceof演算子の使い方について詳しく解説しています。instanceof演算子の書き方を説明し、実際にサンプルコードを載せています。書きながら読み進めるとより理解できるでしょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

この記事では、Javaのinstanceof演算子の使い方について解説しています。

サンプルプログラムを書きながら説明しているので、実際に書いて理解していきましょう。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

田島悠介

今回はinstanceof演算子について解説するよ。

大石ゆかり

田島メンター!instanceof演算子は何をするんですか〜?

田島悠介

instanceof演算子を使うと、オブジェクトの型を判定することができるんだ。さっそく使ってみよう。

大石ゆかり

了解です!

instanceof演算子とは

instanceof演算子は、あるオブジェクトの型を動的に判定するための演算子です。

以下のような用途で用います。

  • オブジェクトが、あるクラスのインスタンスか
  • オブジェクトが、あるクラスの子クラスのインスタンスか
  • オブジェクトが、特定のインターフェースを実装したインスタンスか

 

instanceof演算子の書き方

記法は以下の通りです。

オブジェクト instanceof 型

オブジェクトが指定の型である場合、結果はtrueになります。

そうでない場合、結果はfalseになります。

 

田島悠介

instanceof演算子の書き方だよ。

大石ゆかり

指定したクラスのインスタンスであるなどの、上記の条件に合っていた場合にtrueが返ってくるわけですね。

田島悠介

そうだね。次は実際に、instanceof演算子を使って型を調べてみよう。

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

ソースコード

public class InstanceOfDemo {
  public static void main(String[] args) {
    // 親クラスのインスタンスを作成する
    ParentClass p = new ParentClass();
    printInstance(p);

    System.out.println("---");
    
    // 子クラスのインスタンスを作成する
    ChildClass c = new ChildClass();
    printInstance(c);
  }
  
  private static void printInstance(Object obj) {
    // ParentClassのインスタンスか判定する
    if (obj instanceof ParentClass) {
      System.out.println("オブジェクトはParentClassのインスタンスです");
    }
    
    // ChildClassのインスタンスか判定する
    if (obj instanceof ChildClass) {
      System.out.println("オブジェクトはChildClassのインスタンスです");
    }
  }
}

// 親クラス
class ParentClass {
}

// ParentClassを継承する子クラス
class ChildClass extends ParentClass {
}

 

実行結果

オブジェクトはParentClassのインスタンスです
---
オブジェクトはParentClassのインスタンスです
オブジェクトはChildClassのインスタンスです

 

解説

オブジェクトpはParentClassのインスタンスなので、判定の結果はtrueです。一方、ChildClassのインスタンスではないので、判定の結果はfalseです。

オブジェクトcはChildClassのインスタンスで、ChildClassはParentClassを継承しています。よって判定の結果は両方ともtrueです。

 

以上、Javaのinstanceof演算子の使い方を解説しました。

入門向けJavaの学習サイトもまとめているので、合わせてご覧ください。

 

田島悠介

instanceofで型を判定した実行例だよ。

大石ゆかり

instanceofの結果がtrueだった場合に文字列を出力するようにしたんですね。

田島悠介

このように指定したクラスのサブクラスであっても結果はtrueとなるんだ。覚えておこう。

大石ゆかり

分かりました。ありがとうございます!

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

この記事を監修してくれた方

橋本紘希(はしもとこうき)
システムインテグレータ企業勤務のシステムエンジニア

開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。