java - 与 new 关键字相比,使用 Class.forName() 加载实例有什么优势?

标签 java reflection

我知道定义。我们使用Class.forName("")当我们不知道类的类型时,但这就是这里的难题。

如果我说:

Class.forName("SomeClass");

所以我知道“SomeClass”的类型。所以所有编译器都会在 Class.forName("SomeClass") 中执行此操作case 在编译时不会检查“SomeClass”是否存在。但它会在运行时检查它。但这真的是优势吗?谁能用实时场景向我解释一下?

最佳答案

Class.forName() 为您提供给定名称的。它不会实例化它。您可以使用Class.newInstance()(但存在问题 - 请参阅 here 了解更多信息)

请注意,您可以在(例如)框架中使用它,其中配置文件标识您要加载的类的名称。即该类可以在运行时更改(例如,Spring XML 配置)。在这些情况下,您选择的类很可能都实现一个公共(public)接口(interface) - 否则后续代码很难与其交互。

关于java - 与 new 关键字相比,使用 Class.forName() 加载实例有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832350/

相关文章:

javascript - 在 Java 中使用 JavaScript Cookie 下载文件

java - 如何在 JPA 中持久保存与其他实体具有多对多关联的实体?

java - 如何获取类中声明的类型参数的数量?

java - 从 java 变量调用类方法

java - JAVA中的相对路径设置

Java 11 `HttpClient` 下载但没有? (负内容长度)

java - 查找具有通用参数的构造函数

function - 在 PowerShell 中查看嵌套私有(private)函数定义

java - 在多路由 Controller 方法中确定路由

c# - 如何将通过反射获得的对象传递给模板?