使用反射检查接口是否在 Java 中扩展另一个接口

问题描述

如果接口扩展另一个接口,如何在Java中反射性地检查?我试过这个:

  for (Class<?> aClass : classes) {
            int modifier = aClass.getModifiers();
            if (Modifier.isInterface(modifier)) {
                if (aClass.getSuperclass() != null && aClass.getSuperclass().equals(TopWorker.class)) {
                    log.info(aClass.getSimpleName() + " extends abstract  " + TopWorker.class.getSimpleName());
                }
            }
        }

检查超类不起作用(接口不是类) 谢谢

解决方法

一个接口可以扩展多个接口(就像类可以实现多个接口一样)。因此,检查扩展了哪些接口只需调用 aClass.getInterfaces()

对于您的用例,调用 isAssignableFrom 可能更简单:

if (TopWorker.class.isAssignableFrom(aClass)) {

}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...