如何确定Java类是否实现特定接口

11 java reflection class

我正在尝试使用反射来确定传入的类是否实现了一个IsWdidget接口:

public boolean isAWidget(Class<?> clzz) {
    Class<?> runtimeClass = ClassLoader.getSystemClassLoader().loadClass(clzz.getName());
    Class<?>[] impls = runtimeClass.getInterfaces();
    for(Class<?> clz : impls)
        if(clz.getName().equals(IsWidget.class.getName()))
            return true;

    return false;
}
Run Code Online (Sandbox Code Playgroud)

这是确定这个的最好/最有效的方法吗?我也看到了一种IsWidget.class.isAssignableFrom(Class<?>)方法......

rge*_*man 13

我会使用该isAssignableFrom方法来确定是否IsWidget是超接口:

return IsWidget.class.isAssignableFrom(clzz);
Run Code Online (Sandbox Code Playgroud)

引用上面链接的Javadoc:

确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口.