java - 将对象初始化为 null 还是 new?

标签 java performance coding-style

我正在开发一个网络应用程序,当我在服务器端收到参数时出现了一个问题。我将我的 DTO 的 (数据传输对象) 初始化为 null 的局部变量,当传递特定参数时,我将我的对象初始化为 new。一个说明我的代码的例子:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Object_DTO object_DTO = null;

    if(request.getParameter("parameter").equals("hello")) {
        object_DTO = new Object_DTO();
        object_DTO.setAttr("attr");
        ...
    }
}

我关于性能的问题是:初始化对象的最佳方式是什么?我应该在声明时将其设置为 new 还是保持我正在做的方式?

最佳答案

我个人认为这取决于范围。 object_DTO 是否在 if 语句之外使用?在此代码示例中,使用 null 可能很有用。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Note that unless except in certain cases (IoC)
    // this scenario is quite easy to avoid
    Object_DTO object_DTO = null;

    if(request.getParameter("parameter").equals("hello")) {
        object_DTO = new Object_DTO();
        object_DTO.setAttr("attr");
        ...
    } else if (request.getParameter("parameter").equals("goodbye")) {
        object_DTO = new Object_DTO();
    }

    if (object_DTO == null) {
        // Bad response
    }
}

否则,始终尝试对变量使用最有限的范围,但从性能角度来看,这是次要的。

然而,在单独的性能说明中,我将停止重复调用 getParameter()。将它分配给一个字符串并引用它:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String parameter = request.getParameter("parameter");

    if (parameter.equals("hello")) {
        Object_DTO = new Object_DTO();
        ...
    }
}

关于java - 将对象初始化为 null 还是 new?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23247616/

相关文章:

java - 如何在 web 模块中的类路径中的目录中列出文件

ios - 在 iOS 中使用 SQLite PRAGMA synchronous = OFF 和 journal_mode = MEMORY 进行更新的最坏情况行为

performance - 在大型 postgres 表上添加具有默认值的 bool 字段

MySql性能问题

PHP函数滥用?

math - 在 Python 中编写简单数学计算的最佳实践

coding-style - 你在哪里添加新方法?

java - android 或 java 中的 MD5 哈希

java - 警告 "A web service endpoint could not be found"是什么?

java - 如何根据行中的某些文本删除 JTable 中的行