首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用自定义ClassLoader从Java库中获取不同的新对象

如何使用自定义ClassLoader从Java库中获取不同的新对象
EN

Stack Overflow用户
提问于 2022-07-19 11:58:57
回答 2查看 71关注 0票数 0

我希望获得库中存在的类的新实例。库有从一个父类继承的不同类,我需要获得子类的新实例。我可以准确地提供类名作为文本。

更具体地说,我需要从hapi基库创建不同HL7-v2消息类型的对象。它的父类是AbstractMessage类,其子类是ADT_A01、ADT_A02、.等等,我需要从它创建ADT_A01()、ADT_A02()...etc对象。

如何通过使用类装载机来实现这一点?如果没有,为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 14:05:37

代码语言:javascript
复制
Class hl7MessageClass = getClass().getClassLoader().loadClass("package_name"+hl7MessageType);
return (AbstractMessage) hl7MessageClas.newInstance();
票数 0
EN

Stack Overflow用户

发布于 2022-07-19 12:37:28

您不需要使用类加载器。您需要使用工厂模式。您需要创建一个Factory类,该类具有一个方法get实例,该方法返回接口或抽象父类,并接收一个参数,例如具体的类名或其他标识符,该方法将返回具体的类。简单地说,这是一个工厂模式描述。这里只有一个关于模式的链接:基于Java的工厂方法设计模式,还有更多的链接。

此外,我还写了一个我称之为“自我填充工厂”的特性。你可能对使用类似的东西感兴趣。下面是关于这个特性的文章:https://dzone.com/articles/non-intrusive-access-to-quotorphanedquot-beans-in。这个特性(以及其他一些有趣的特性)可以在名为MgntUtils的开源java库中获得,这个库是由我编写和维护的。您可以在Maven伪像Github上获得它(包括源代码和Javadoc)。下面是指向库Javadoc的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73036486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档