我有一个IModelElement接口,以及几个实现该接口的类。我的代码中的某处有以下声明:
Object childClass = request.getNewObjectType();
这里getNewObjectType()返回一个Class对象。我需要检查Class对象是否代表实现IModelElement接口的类,谁知道这是如何实现的呢?
答案 0 :(得分:5)
Class.isAssignableFrom(),如果它是一个类,那么request.getNewObjectType()
应该返回Class,而不是Object。
if (IModelElement.isAssignableFrom((Class) childClass)) {
// whatever
}
答案 1 :(得分:1)
您可以尝试将request.getNewObjectType()
的返回值转换为IModelElement
。如果没有ClassCastException,则返回的对象属于实现接口的类。
try {
IModelElement temp = (IModelElement) request.getNewObjectType();
} catch (ClassCastException e) {
// the interface is not implemented
}
答案 2 :(得分:0)
使用 instanceof 运算符?
if(childClass instanceof Class) {
(Class) child = (Class) childClass;
child.method();
}
http://download.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
答案 3 :(得分:0)
尝试:
Object childClass = request.getNewObjectType();
if (childClass instanceof Class) {
for (Class interfaceClass in ((Class)childClass).getInterfaces()) {
if (interfaceClass.getCanonicalName().equals("org.xx.YourInterface")) {
// Do some stuff.
}
}
}