java如何轻松迭代所有超级类/接口
迭代给定Class<?>
对象的所有超类/接口的最优雅方式是什么?我基本上是在寻找一个递归的^{
让我们假设我们的继承如下所示(其中Cn
是类In
是接口):
I3
↗ ↖
C2 I1 I2
↖ ↖ ↗
C1 I0
↖ ↗
C0
它应该捕获上面显示的所有类。如果可能的话,迭代顺序应该是breadth first,所以如下所示:
C0 -> C1 -> I0 -> C2 -> I1 -> I2 -> I3
是否有内置方法或库提供创建Collection<Class<?>>
、Stream<Class<?>>
或Iterator<Class<?>>
的功能
欢迎任何帮助
# 1 楼答案
这个解决方案实现了一个
Iterator<Class<?>>
。如果你不介意使用库,我建议你签出the accepted answer如果需要
Collection<Class<?>>
,可以使用Google Guava进行以下操作:电话:
屈服
# 2 楼答案
下面是一个快速的广度优先层次结构:
(请仔细检查。我还没有时间调试和改进。稍后再看)