web-dev-qa-db-ja.com

ObjectがString、HashMap、またはHashMap []のインスタンスであるかどうかを確認します

Javaのオブジェクトがあります。オブジェクトを実際にそれらのオブジェクトにキャストする前に、オブジェクトがString、HashMap、またはHashMap []のインスタンスであるかどうかを確認する方法はありますか?

そうでない場合、上記が機能することは直感に反するように思われるので、各オブジェクトにキャストし、新しくキャストされたオブジェクトについてテストして、実際にキャストされたオブジェクトのタイプであるかどうかを確認する方法はありますか?

12
user1022241

はい:

 if(obj instanceof String)
 {
     String str = (String) obj;
     .
     .
     .
 }

ところで、これに関して明確にするために:

[…]新しくキャストされたオブジェクトについて何かをテストして、そのオブジェクトが実際にキャストされたオブジェクトのタイプかどうかを確認しますか?

cannot何かを無効な型にキャストします。 objのタイプがStringの場合、((Integer)obj)は、実行時にClassCastExceptionを発生させます。

31
ruakh

instanceof 演算子を探しています。

Instanceof演算子は、オブジェクトを指定されたタイプと比較します。これを使用して、オブジェクトがクラスのインスタンス、サブクラスのインスタンス、または特定のインターフェイスを実装するクラスのインスタンスであるかどうかをテストできます。

例:_"Hello" instanceof String_はtrueを返し、new Integer(5) instanceof Stringfalseを返します。

8
Jeffrey