gpt4 book ai didi

java - 我如何枚举Java中父类(super class)的所有子类

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

我的应用程序包含几个 JAR 文件。我想遍历所有 JAR 文件并找到所有子类化特定类的类,这样我就可以运行它们的静态初始化程序。

我查看了 java.lang.ClassLoader 的 Javadoc,但找不到执行此操作的任何方法。

我正在尝试使用抽象父类(super class)中的“自注册”类实现“产品交易者”模式 ( http://www.ubilab.com/publications/print_versions/pdf/plop-96-producttrader.pdf )。父类(super class)将有一个映射子类提供的服务的 HashMap 和处理该服务的 java.lang.Class 文件。

问题是一个类在加载之前不会运行它的静态初始化器。如果我可以迭代所有子类,我可以强制每个子类加载并运行它的初始化程序。

谢谢,拉尔夫

最佳答案

这通常是无法解决的。类加载器不需要能够遍历它可以加载的类。 不能的类加载器的最简单示例是当您从 http:// 基本 URL 加载类时:HTTP 没有提供标准化的方法来枚举的内容任何给定的 URL。

更好的实现方式是使用 ServiceLoader并让所有实现类通过其 jar 文件中的一个简单条目自行注册。

关于java - 我如何枚举Java中父类(super class)的所有子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280698/

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