gpt4 book ai didi

java - 在 Java 中自动加载特定父类(super class)的子类的工厂类?

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

在我描述我的问题之前,让我说我怀疑我可能只是缺少要搜索的正确术语,这就是我在 stackoverflor 上的搜索没有结果的原因。因此,也非常感谢指向答案的链接。

我正在尝试创建一个包含工厂的库,我们称它为“MyFactory”。 MyFactory 有一个返回抽象类“MySuper”的对象的方法,还有一个将可用子类公开给“MySuper”的方法。该库旨在进行大量扩展,因此将经常添加“MySuper”的子类,然后库将被重新编译,并转储到使用它的应用程序的库文件夹中。

我想要的是能够将“MySuper”的子类添加到库中,并让“MyFactory”知道它,最好不需要做任何其他事情,只需创建一个“MySuper”的新子类。

到目前为止,我使用反射让“MyFactory”创建“MySuper”类型的新实例,方法是将类名赋予方法,如下所示:

public MySuper getSuperObject(String name) {
return (MySuper) Class.forName("my.package." + name).newInstance(); }

但是我怎样才能让工厂将所有“MySuper”类公开为 f.x.一个字符串列表,所以使用该库的应用程序知道他们可以调用什么?我可以迭代包的内容吗?

我对解决方案持开放态度,最重要的部分是将来添加新的“MySuper”子类应该非常轻松..

谢谢:-)

更新:

我只想指出,我找到了一个不错的 Java 库,它可以轻松处理反射,并允许您搜索特定类的子类型。所以我的问题可以用那个库来解决(我已经测试过了)。这是一个链接:http://code.google.com/p/reflections/

最佳答案

您正在寻找通用工厂模式。像..

public static <T extends MySuper> T createDocument(Class<T> subClazz) throws InstantiationException, IllegalAccessException {
return subClazz.newInstance();
};

你可以在谷歌上搜索 Generic Factory Pattern,你会发现很多例子。

关于java - 在 Java 中自动加载特定父类(super class)的子类的工厂类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266713/

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