java.lang.Class.getInterfaces
返回所有直接实现的接口,即不会遍历类树以获取所有父类型的所有接口。例如,层次结构
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.
对于Bar
我想获得[B, C]
,但是对于任意树深度。
我自己可以写这个,但是我确定必须存在一个已经存在的库,任何想法?
答案 0 :(得分:45)
答案 1 :(得分:16)
final Set<TypeToken> tt = TypeToken.of(cls).getTypes().interfaces();
这是比古代Apache的功能更强大,更清晰的反射API。
答案 2 :(得分:2)
不要忘记, Spring Framework 有许多类似的API类,如Apache Commons Lang。所以有:org.springframework.util.ClassUtils#getAllInterfaces