0

How to check reflectively in Java if interface extends another interface? I tried this:

  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());
                }
            }
        }

Check for Superclass is not working (interface is not a class) Thanks

Miroslav Trninic
  • 3,327
  • 4
  • 28
  • 51

1 Answers1

2

An interface can extend multiple interfaces (just like classes can implement multiple interfaces). As such, checking which interfaces are extended is simply a matter of calling aClass.getInterfaces().

For your use case it is probably simpler to just call isAssignableFrom:

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

}

Jeroen Steenbeeke
  • 3,884
  • 5
  • 17
  • 26