27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaのinstanceof演算子

Last updated at Posted at 2016-07-06

instanceof演算子とは?

オブジェクトの型を判定する演算子。

A instanceof B
  • AがBと同じクラスのオブジェクトのインスタンスである場合
  • AがインターフェースBの実装クラスのオブジェクトのインスタンスである場合

にtrueを返す。

instanceof演算子を利用する上での注意点

1.右辺・左辺に指定されたクラスには継承関係がなければならない。

public class Sample {
    public static void main(String[] args) {
        System.out.println(new Hoge() instanceof Piyo); // コンパイルエラー
    }
}

class Hoge {}
class Piyo {}

HogeとPiyoとの間に継承関係がないためコンパイルエラーとなる。

2.(1に関連して)右辺にインターフェースを指定する場合は左辺がその実装クラスのオブジェクトのインスタンスでなくとも可

public class Sample {
    public static void main(String[] args) {
        System.out.println(new Hoge() instanceof Piyo); // false
    }
}

class Hoge {}
interface Piyo {}

HogegはPiyoの実装クラスではないがコンパイルエラーは発生しない。
(私はなぜ1はコンパイルできず、こっちはOKなのかが最初納得がいかなかった)

3.左辺にnullが指定されていた場合はfalse

public class Sample {
    public static void main(String[] args) {
        Hoge hoge = null;

        System.out.println(null instanceof Hoge);   // false
        System.out.println(hoge instanceof Hoge);   // false
    }
}

class Hoge {}
27
30
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?