如何检查param类的类型?

时间:2012-04-04 06:47:07

标签: java android instanceof

我有以下方法:

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);

On getServiceUri我想根据ServiceClass的类型调用WebService。

我知道equals会比较对象实例,但在这种情况下我试图发现对象的类型。

任何人都知道如何使用这种方法进行比较?

2 个答案:

答案 0 :(得分:7)

instanceof operator is the best choice..

你可以做这样的事情

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

}

答案 1 :(得分: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)