1. ホーム
  2. java

[解決済み] Javaでオブジェクトがクラスに属しているかどうかをチェックする [重複]。

2023-06-26 14:46:23

質問

あるオブジェクトが与えられたクラスに属しているかどうかを簡単に確認する方法はありますか?例えば、私は

if(a.getClass() = (new MyClass()).getClass())
{
    //do something
}

が、これでは毎回新しいオブジェクトをその場でインスタンス化し、それを破棄する必要があります。aがMyClassに属していることを確認する良い方法はないでしょうか?

どのように解決するのですか?

この instanceof キーワードは、他の回答で説明されているように、通常、あなたが望むものです。 覚えておいてほしいのは instanceof が返すのは true を返します。

あるオブジェクトがクラスの直接のインスタンスであるかどうかを確認したい場合、クラスを比較することができます。インスタンスのクラスオブジェクトを取得するためには getClass() . そして、特定のクラスに静的にアクセスするには ClassName.class .

だから例えば

if (a.getClass() == X.class) {
  // do something
}

上記の例で、条件が真になるのは a のインスタンスである場合 X のインスタンスですが、もし a のサブクラスのインスタンスであれば X .

比較すると

if (a instanceof X) {
    // do something
  }

の中で instanceof の例では、この条件が成立するのは a のインスタンスであれば X のインスタンスである場合、あるいは a のインスタンスである場合は サブクラス X .

ほとんどの場合 instanceof が正しい。