java泛型vs使用Class.forName()动态加载类

假设我正在上一个叫做政府的课程.政府有会员,如官员,部长,部门等.对于每个成员,我创建一个界面,任何特定的政府都按照自己的意愿定义.

政府类中的主要方法称为服务(请求请求).假设查询率非常大(每秒1000次查询).

为了建立政府,我可以:
1)使用Java泛型来编写政府< Class Minister,Class Officer,…>任何特定的政府实施需要在java代码中创建自己的政府对象,并且main()需要具有可部署的jar.

2)有一个配置文件,指定官员,部长等的类名,每当调用Serve()时,它使用Class.forName()和Class.newInstance()来创建类的对象.任何新政府只需要为其成员和配置文件编写类.所有政府都有一个主要().

从纯粹的性能角度来看 – 这更好,为什么?我主要担心的是:

a)forName()每次执行代价高昂的搜索吗?假设有很大的类.

b)我们是否错过了在案例1中可能执行的编译器优化,但在动态类中没有案例2?

最佳答案 只要重用您的管理对象,运行时就没有区别.差异仅在对象创建时.

1& 2概念不同 – 1个是硬连线,2个是动态的(你甚至可以使用像春天,guice或pico这样的DI对手 – 基本上你建议你自己编写)

至于forName()性能 – 它在classloader上(也在容器上).他们的MOst会缓存名称解析结果,在地图中查找 – 但我不能说话

至于优化 – 有编译器优化,以及来自JIT编译器的激进运行时优化 – 它们更重要.

点赞