我的一位同事在finally块中设置了null.我认为这是胡说八道.
public Something getSomething() {
JDBCConnection jdbc=null;
try {
jdbc=JDBCManager.getConnection(JDBCTypes.MysqL);
...
}
finally {
JDBCManager.free(jdbc);
jdbc=null; // <-- Useful or not?
}
}
你怎么看呢?
你是对的,jdbc是一个局部变量,所以当getSomething()
方法返回jdbc时,它将超出范围,并且有资格进行
垃圾收集,这实际上与将其设置为null相同.因此,当下一行
代码超出范围时,将变量设置为null是没有意义的.
优良作法是将变量限制在所需的最小范围内,例如:如果你只需要一个for循环中的变量然后在for循环中声明它,当代码退出for循环时它将有资格进行垃圾收集.这样,除了降低方法的复杂性之外,甚至还需要将局部变量设置为null,并且有利于您的代码变得更加模块化,更易于阅读和维护.