Es klingt wie Sie für Class.getInterfaces()
suchen:
public static void showInterfaces(Object obj) {
for (Class<?> iface : obj.getClass().getInterfaces()) {
System.out.println(iface.getName());
}
}
Zum Beispiel auf einer Implementierung von LinkedList
das druckt:
java.util.List
java.util.Deque
java.lang.Cloneable
java.io.Serializable
Beachten Sie, dass java.util.Queue
hierdurch nicht angezeigt wird, weil java.util.Deque
erweitert es - also wenn Sie wollen alle die Schnittstellen implementiert, müssten Sie recurse. Zum Beispiel mit Code wie folgt:
public static void showInterfaces(Object obj) {
showInterfaces(obj.getClass());
}
public static void showInterfaces(Class<?> clazz) {
for (Class<?> iface : clazz.getInterfaces()) {
System.out.println(iface.getName());
showInterfaces(iface);
}
}
... ist der Ausgang:
java.util.List
java.util.Collection
java.lang.Iterable
java.util.Deque
java.util.Queue
java.util.Collection
java.lang.Iterable
java.lang.Cloneable
java.io.Serializable
... und jetzt werden Sie feststellen, dass Iterable
und Collection
zweimal auftreten :) Sie die sammeln konnte "Bisher gesehene Schnittstellen" in einem Set, um Doppelungen zu vermeiden.