1

私は次の方法を持っています:

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
 }
}

メソッドを呼び出す: getServiceUri(MyClass.class);

OnServiceClassgetServiceUriのタイプに基づいてWebServiceを呼び出したい。

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

この種のアプローチを使用して比較する方法を知っている人はいますか?

4

2 に答える 2

7
instanceof operator is the best choice..

あなたはこのようなことをすることができます

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

}
于 2012-04-04T06:50:13.197 に答える
0
public static String getServiceUri(Class<?> classParam) {

    if(classParam instanceof MyClass){

     } 
}

これは間違っています。classParaminstanceof 演算子を使用するには実際のインスタンス(オブジェクト)である必要があるため、コンパイルさえしません。したがって、名前です。

classParam が MyClass.class と正確に等しいかどうかを知りたい場合:

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

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

ただし、classParam の階層全体を MyClass に対してチェックしたい場合は、次のことができます。classParam.isAssignableFrom(MyClass.class)

于 2015-01-16T21:51:30.003 に答える