Javaのオブジェクトがあります。オブジェクトを実際にそれらのオブジェクトにキャストする前に、オブジェクトがString、HashMap、またはHashMap []のインスタンスであるかどうかを確認する方法はありますか?
そうでない場合、上記が機能することは直感に反するように思われるので、各オブジェクトにキャストし、新しくキャストされたオブジェクトについてテストして、実際にキャストされたオブジェクトのタイプであるかどうかを確認する方法はありますか?
はい:
if(obj instanceof String)
{
String str = (String) obj;
.
.
.
}
ところで、これに関して明確にするために:
[…]新しくキャストされたオブジェクトについて何かをテストして、そのオブジェクトが実際にキャストされたオブジェクトのタイプかどうかを確認しますか?
cannot何かを無効な型にキャストします。 obj
のタイプがString
の場合、((Integer)obj)
は、実行時にClassCastException
を発生させます。
instanceof
演算子を探しています。
Instanceof演算子は、オブジェクトを指定されたタイプと比較します。これを使用して、オブジェクトがクラスのインスタンス、サブクラスのインスタンス、または特定のインターフェイスを実装するクラスのインスタンスであるかどうかをテストできます。
例:_"Hello" instanceof String
_はtrue
を返し、new Integer(5) instanceof String
はfalse
を返します。