java – 在finally块中设置reference = null?

前端之家收集整理的这篇文章主要介绍了java – 在finally块中设置reference = null?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的一位同事在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,并且有利于您的代码变得更加模块化,更易于阅读和维护.

猜你在找的Java相关文章