gpt4 book ai didi

java - 识别对象实现的接口(interface)列表

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:46 24 4
gpt4 key购买 nike

有没有办法识别对象实现的接口(interface)列表。例如:LinkedList 同时实现了 List 和 Queue 接口(interface)。

是否有任何 Java 语句可用于确定它?

最佳答案

听起来您正在寻找 Class.getInterfaces() :

public static void showInterfaces(Object obj) {
for (Class<?> iface : obj.getClass().getInterfaces()) {
System.out.println(iface.getName());
}
}

例如,在 LinkedList 的实现上打印:

java.util.List
java.util.Deque
java.lang.Cloneable
java.io.Serializable

请注意 java.util.Queue 不会由此显示,因为 java.util.Deque 扩展了它 - 所以如果您想要 all 实现的接口(interface),你需要递归。例如,使用如下代码:

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

...输出是:

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

... 现在您会注意到 IterableCollection 出现了两次 :) 您可以将“到目前为止看到的接口(interface)”收集到一个集合中,以避免重复。

关于java - 识别对象实现的接口(interface)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com