2012-04-04 9 views
1

私は、次のような方法があります:私はServiceClassのタイプに基づいてWebサービスを呼び出したいgetServiceUrigetServiceUri(MyClass.class);paramクラスの型をチェックするには?

public static String getServiceUri(Class<?> c) { 

// I'd like to check which type the parameter is... 
if(c.getClass().equals(MyClass.class)){ 
    do stuff 1 
} else { 
    do stuff 2 
} 
} 

Invokeメソッドを。

私はequalsがオブジェクトインスタンスを比較することは知っていますが、この場合はオブジェクトのタイプを発見しようとしています。

私はこのようなアプローチを使ってどのように比較することができますか?

答えて

7
instanceof operator is the best choice.. 

あなたはこの

if(c instanceof MyClass){ 
//do your stuff 

} 
+2

instaceofを行うことができます質問者のようにクラスを一致させるよりはるかに優れています。 instanceofは継承を考慮します。 – Snicolas

+0

@Snicolas ..本当に.. – ngesh

+1

あなたは上記のinstanceOfで大文字Oのような一文字修正をすることを許可したいと思います。 – rob5408

0
public static String getServiceUri(Class<?> classParam) { 

    if(classParam instanceof MyClass){ 

    } 
} 

これが間違っているような何かを行うことができます。 classParamはinstanceof演算子を使用するために実際のインスタンス(オブジェクト)である必要があるため、コンパイルされません。

あなたはclassParamはMyClass.classと正確に一致しているかどうかを知りたい場合は、次の

public static String getServiceUri(Class<?> c) { 

    if(classParam == MyClass.class){ 
    } 
} 

ただし、MyClassのに対してclassParamの階層全体をチェックしたいならば、あなたはclassParam.isAssignableFrom(MyClass.class)

関連する問題