java - 为什么有些程序加载类而不是在 Java 中新建类

标签 java

在其中一个 Spring 类 org.springframework.web.servlet.view.tiles2.TilesConfigurer 中,运行以下代码:

Class clazz = getClass().getClassLoader().loadClass(
    "org.apache.tiles.extras.complete.CompleteAutoloadTilesInitializer");
this.tilesInitializer = (TilesInitializer) clazz.newInstance();

为什么作者不直接写

this.tilesInitializer = new org.apache.tiles.extras
    .complete.CompleteAutoloadTilesInitializer()

与第一种方式相比,输出是否有所不同或有所改进?

更新 TilesConfigurer 类中的代码与第一个示例中的代码完全相同。它不会从 DI 层加载字符串。这是一个硬编码字符串。

最佳答案

在第二种情况下,依赖项存在于代码中(在编译时),而在第一种情况下,依赖项仅在运行此代码时创建。

以第一种方式做事可能会有用,原因如下:

  • 您想加快程序加载速度(在第二种情况下 类加载器将在今年 Spring 加载 Apache tiles 类及其依赖项 加载类,在第一种情况下,它会等到这个 spring 代码被加载 叫)

  • 您希望拥有无需这种依赖性即可独立运行的代码 (在第二种情况下,如果没有 tiles.extras ....存在类文件,但在第一种情况下你可以, 如果存在,它们可能只是提供一些额外的功能)。

关于java - 为什么有些程序加载类而不是在 Java 中新建类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170365/

相关文章:

java - @EventListener & IRequestCycle.getResponseBuilder.updateComponent 不更新组件

java - android 秒表/计时器应用程序 - 当时间用完时切换回应用程序

java - Max element - Sun 的答案 VS 我的

java - 设计模式的引用实现

java - ListView不想刷新

java - 在 Java 7 系统上运行 Java 12.0.1

java - 创建随机值的最佳方法是什么?

java - 创建 SOAP 网络服务客户端的方法

java - Spring Integration,更改 udp-outbound-channel 端口

java - 将文本文件输入插入链接列表