Javaプログラムにおけるinstanceof演算子の使い方【初心者向け】
初心者向けにJavaのinstanceof演算子の使い方について詳しく解説しています。instanceof演算子の書き方を説明し、実際にサンプルコードを載せています。書きながら読み進めるとより理解できるでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
この記事では、Javaのinstanceof演算子の使い方について解説しています。
サンプルプログラムを書きながら説明しているので、実際に書いて理解していきましょう。
なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。
今回はinstanceof演算子について解説するよ。
田島メンター!instanceof演算子は何をするんですか〜?
instanceof演算子を使うと、オブジェクトの型を判定することができるんだ。さっそく使ってみよう。
了解です!
instanceof演算子とは
instanceof演算子は、あるオブジェクトの型を動的に判定するための演算子です。
以下のような用途で用います。
- オブジェクトが、あるクラスのインスタンスか
- オブジェクトが、あるクラスの子クラスのインスタンスか
- オブジェクトが、特定のインターフェースを実装したインスタンスか
instanceof演算子の書き方
記法は以下の通りです。
オブジェクト instanceof 型
オブジェクトが指定の型である場合、結果はtrueになります。
そうでない場合、結果はfalseになります。
instanceof演算子の書き方だよ。
指定したクラスのインスタンスであるなどの、上記の条件に合っていた場合にtrueが返ってくるわけですね。
そうだね。次は実際に、instanceof演算子を使って型を調べてみよう。
実際に書いてみよう
ソースコード
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人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
この記事を監修してくれた方
橋本紘希(はしもとこうき) 開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。 |