2012-03-08 4 views
2

私は、私はそれがあると、そのののinstanceof場合、クラスオブジェクトまたはクラス名とテストを通過したいこの(オブジェクトinstanceof C)Cの型は何ですか?

public void method(Object obj, Class objClass) { 
    if(obj instanceof objClass) { 
     //do something 
    } 
} 

ような何かをしてみてください。 これは動作しません、誰もこれを行う方法を知っていますか? ありがとう

+0

それともhttp://stackoverflow.com/questions/376988/is-there-any-way-other-than-instanceof-operator-for-object-type-comparison-in-ja場合 – skaffman

答えて

6

isInstanceの方法はClassです。

指定されたオブジェクトがこのクラスが表すオブジェクトと割り当て互換性があるかどうかを判定します。 このメソッドは、Java言語instanceofオペレータと動的に等価です。指定されたObject引数がnullでなく、ClassCastExceptionを発生させずにこのClassオブジェクトが表す参照型にキャストできる場合、このメソッドはtrueを返します。それ以外の場合はfalseを返します。

だからあなたはあなたが一般的にこれを実行したい場合は、あなたがobjClassによって表される型に変換するには.castを使用することができます

if (objClass.isInstance(obj)) ... 

を記述します。

public <T> void method(Object obj, Class<T> objClass) { 
    if(objClass.isInstance(obj)) { 
    T t = objClass.cast(obj); 
    //do something with t instead of obj 
    } 
} 
+0

おかげで、 (objClass.isInstance(obj))が機能します。 – Mustafa

関連する問題