将对象初始化为null或new?

luc*_*sdc 1 java performance coding-style

我正在开发一个Web应用程序,当我在服务器端接收参数时出现了一个问题.我将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");
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*rto 6

我个人认为这取决于范围.被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
    }
}
Run Code Online (Sandbox Code Playgroud)

否则,总是尝试对变量使用最有限的范围,但在性能方面这是次要的.

然而,在一个单独的表演笔记中,我会停止getParameter()反复呼叫.将其分配给String并改为引用它:

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

    if (parameter.equals("hello")) {
        Object_DTO = new Object_DTO();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)