我希望获得库中存在的类的新实例。库有从一个父类继承的不同类,我需要获得子类的新实例。我可以准确地提供类名作为文本。
更具体地说,我需要从hapi基库创建不同HL7-v2消息类型的对象。它的父类是AbstractMessage类,其子类是ADT_A01、ADT_A02、.等等,我需要从它创建ADT_A01()、ADT_A02()...etc对象。
如何通过使用类装载机来实现这一点?如果没有,为什么?
发布于 2022-07-21 14:05:37
Class hl7MessageClass = getClass().getClassLoader().loadClass("package_name"+hl7MessageType);
return (AbstractMessage) hl7MessageClas.newInstance();发布于 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的链接
https://stackoverflow.com/questions/73036486
复制相似问题