我有以下方法:
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会比较对象实例,但在这种情况下我试图发现对象的类型。
任何人都知道如何使用这种方法进行比较?
答案 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)