gpt4 book ai didi

java - 静态和动态类加载?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:40 25 4
gpt4 key购买 nike

为什么我需要像这样加载类定义:

Class.forName("类名");

这个的需求和优势是什么。一般用于在JDBC中加载驱动类。

最佳答案

What is the need and advantage of this. Typically which is used to load driver class in JDBC.

它允许您构建应用程序,以便关键的外部依赖项不会编译到应用程序源代码中。

例如,在 JDBC 案例中,它允许您在不同的驱动程序实现和(理论上)不同的数据库供应商之间切换,而无需更改您的源代码。

另一个用例是,当某些供应商开发具有扩展点的通用形式的应用程序时,允许客户“插入”他们自己的自定义类。自定义类通常使用 Class.forName(...) 加载。

第三个用例是应用程序框架和容器,它们通常在后台使用 Class.forName(...) 动态加载特定于应用程序的 bean、servlet 等的类.

第四个用例是应用程序(或更可能是应用程序库)具有在典型应用程序运行中未使用的模块。通过在内部使用 Class.forName(...),应用程序或库可以避免加载和初始化大量不需要的类的 CPU 和内存开销。 (Sun Swing 库显然这样做是为了减少应用程序启动时间,我相信还有其他示例。)

但是,如果您不需要能够执行此类操作,则静态依赖项更易于实现。

跟进

But here ,while compile itself the "ClassName" parameter is known .So the key external dependency is compiled into application source-code??

没有。显然,这违背了初衷。应用程序(或框架)通常会确定要从某些配置文件中动态加载的类的名称。

关于java - 静态和动态类加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126298/

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