gpt4 book ai didi

java - 使用接口(interface)和反射 API 在运行时创建实例是 coSTLy 选项

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

我遇到过需要从表中动态选取实现接口(interface)的类的情况。该类的绝对路径将在表中配置。将从表中选取类名,然后使用反射 API 创建并执行该类的实例。

我假设当多个线程访问该程序时会创建许多实例,这可能会消耗大量内存,并且可能会对性能产生影响。我的这个假设正确吗?有什么办法可以解决我这里的情况吗?

以下是代码片段:

Class<?> c = Class.forName(dynamicClass);            
ServiceValidatorInterface inst = (ServiceValidatorInterface) c.newInstance();
inst.validateService(serviceDetails);

最佳答案

无论您如何创建实例,创建实例都会占用内存,因此这与问题无关。

至于性能影响,通过 newInstance() 创建实例当然与直接调用构造函数不同,但这真的会对您产生影响吗?另外,如果您要一遍又一遍地创建同一类的实例,您可以将它们合并起来,这样它们只创建一次。您只需确保这些类是无状态的并且可以共享。

不要太急于担心性能影响。现在是 2018 年,我们拥有有史以来最强大的计算机,但人们却提前担心(通常没有理由)一些无关紧要的事情。了解某些东西是否具有可接受的性能的唯一方法是对其进行测量,除非您先编写代码,否则无法做到这一点。

关于java - 使用接口(interface)和反射 API 在运行时创建实例是 coSTLy 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432779/

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