如何给定类型实现某个接口

时间:2011-09-15 11:56:46

标签: java

我有一个IModelElement接口,以及几个实现该接口的类。我的代码中的某处有以下声明:

Object childClass = request.getNewObjectType();

这里getNewObjectType()返回一个Class对象。我需要检查Class对象是否代表实现IModelElement接口的类,谁知道这是如何实现的呢?

4 个答案:

答案 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.
        }
    }
}