45 votes

obtenir toutes les interfaces (dérivées) d'une classe

java.lang.Class.getInterfaces renvoie toutes les interfaces directement implémentées, c'est-à-dire qu'il ne parcourt pas l'arborescence des classes pour obtenir toutes les interfaces de tous les types parents. par exemple la hiérarchie

 public interface A {}
public interface B {}
public interface C extends B {}

public class Foo implements A {} // Foo.class.getInterfaces() returns [A]
public class Bar implements C {} // Bar.class.getInterfaces() returns [C], note B is not included.

Pour Bar j'aimerais obtenir [B, C] , mais pour toute profondeur d'arborescence arbitraire.

Je pourrais l'écrire moi-même, mais je suis sûr qu'il doit exister une bibliothèque qui le fait déjà, des idées ?

52voto

Alex Gitelman Points 15062

Apache Commons Lang a la méthode dont vous avez besoin : ClassUtils.getAllInterfaces

8voto

Igor Rybak Points 1705

N'oubliez pas que Spring Framework possède de nombreuses classes util similaires comme Apache Commons Lang. Il y a donc : org.springframework.util.ClassUtils#getAllInterfaces

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X