我正在开发一个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");
        ...
    }
}


关于性能的我的问题是:初始化对象的最佳方法是什么?我应该在声明时将其设置为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()。将其分配给一个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();
        ...
    }
}

09-25 21:57