我知道定义。我们使用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/