我正在开发一个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
还是保持我正在做的方式?
答案 0 :(得分: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
}
}
否则,请始终尝试对变量使用最有限范围,但在性能方面这是次要的。
但是,在单独的表现说明中,我会不再重复拨打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();
...
}
}
答案 1 :(得分:2)
Object_DTO object_DTO = null;
不会创建任何对象。
new Object_DTO()
创建并初始化一个对象,只有当你真正需要一个对象时才应该这样做。