gpt4 book ai didi

java - 当并非层次结构中的所有类型都在过滤后的类路径 url 中时,使用反射查找类的(传递)子类型

转载 作者:行者123 更新时间:2023-11-29 09:10:10 25 4
gpt4 key购买 nike

我正在尝试使用 Reflections库获取特定类的所有子类。我需要将搜索过滤到特定类路径 url 中的子类。这是我正在使用的代码:

ConfigurationBuilder config = new ConfigurationBuilder();
config.addUrls(<my_url>);
Reflections reflections = new Reflections(config);
Set<Class<? extends A>> set = reflections.getSubTypesOf(A.class)

我的问题如下:假设类 B 扩展了 A,类 C 扩展了 B。所以我们有:

A <|-- B <|-- C

A 和 B 在一个不同于 C 的类路径 URL 中。并且给反射的 url 是 C 的一个。然后我希望 C 在返回的集合中,并且 B 不应该存在,因为它在另一个类路径 url 中。

但是,返回的集合是空的。 C 不在反射返回的类集中,尽管它是 A 的传递后代。如果我将 B 移动到 C 的相同类路径 URL,则 B 和 C 都会返回。然后我想问题是如果层次结构中间的任何类不在过滤的 url 中,默认情况下反射不会回答(传递的)子类。

我的问题是:即使层次结构中间的某些类不在过滤的 url 中(但子类本身在过滤的 url 中),我如何指示反射来回答特定类的(传递的)子类?

最佳答案

关键是,如果没有扫描所有相关的 url,传递性就无法发现。你应该知道你的类路径。

如果您不知道涉及的所有网址,您可以扫描所有网址,使用

ClasspathHelper.forClassLoader()

关于java - 当并非层次结构中的所有类型都在过滤后的类路径 url 中时,使用反射查找类的(传递)子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917417/

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