我正在开发一个网络应用程序,当我在服务器端收到参数时出现了一个问题。我将我的 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/