java – 在finally块中设置reference = null?
发布时间:2020-12-15 02:53:11 所属栏目:Java 来源:网络整理
导读:我的一位同事在finally块中设置了null.我认为这是胡说八道. public Something getSomething() { JDBCConnection jdbc=null; try { jdbc=JDBCManager.getConnection(JDBCTypes.MYSQL); ... } finally { JDBCManager.free(jdbc); jdbc=null; // -- Useful or n
我的一位同事在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,并且有利于您的代码变得更加模块化,更易于阅读和维护. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |