动态实例化实现接口和调用接口方法的类



我有一个接口,LogParser,由一个方法parse(String x)组成。我还有一个 ArrayList,其中包含多个类的名称,这些类都实现了LogParser。是否可以遍历此类名列表并动态实例化它们各自的类并调用parse(String x)

我遇到的问题是这些类没有零参数构造函数,所以我在尝试通过反射调用解析方法时遇到了很多 InstantiationException。

谢谢!

如果实现类型没有构造函数,那将是非常痛苦的。最简单的方法可能是使用像Spring或Guice这样的依赖注入框架。

在 Spring 中,您只需注入一个 List<LogParser> ,您将获得所有已知的实现:

@Autowired
private List<LogParser> parsers;

现在当然,您必须将每个LogParser分别定义为春豆。

其他框架中也有类似的功能。

您必须调用某个构造函数才能有效地实例化对象。你使用反射来获取构造函数的Method,并以此进行实例化。请参阅使用接受字符串参数的构造函数实例化类对象?。我没有关闭为重复项,因为您有额外的问题:您知道所有类都有一个具有相同签名的构造函数吗?

相关内容

  • 没有找到相关文章

最新更新