Java 是否应关闭不包含资源的格式化程序?
例如,我有一个Java 是否应关闭不包含资源的格式化程序?,java,Java,例如,我有一个新的格式化程序(新的StringWriter())。我是否应该关闭格式化程序,即使它没有任何非内存资源?关闭StringWriter无论如何都没有效果 我可以想象,如果我将实现从StringWriter更改为其他内容,那么以后会忘记做这件事。但另一方面,不必要的关闭只会使代码混乱。不,在这种情况下,没有令人信服的理由让您关闭格式化程序 你有没有写过: Writer formatted; formatted = new StringWriter(); Formatter format
新的格式化程序(新的StringWriter())
。我是否应该关闭格式化程序,即使它没有任何非内存资源?关闭StringWriter无论如何都没有效果
我可以想象,如果我将实现从StringWriter更改为其他内容,那么以后会忘记做这件事。但另一方面,不必要的关闭只会使代码混乱。不,在这种情况下,没有令人信服的理由让您关闭
格式化程序
你有没有写过:
Writer formatted;
formatted = new StringWriter();
Formatter formatter = new Formatter(formatted, Locale.US);
那么你应该打电话:
即使它没有效果,因为现在格式化的
变量被声明为接口类型Writer
,以后可以实现为真正的可关闭的
类型,例如PrintWriter“应该”意味着我不习惯的义务级别。你为什么不关上它?特别是因为try-with-resources使这样做变得微不足道。在这种特殊情况下,我不能使用Java1.7,所以try-with-resources不可用。否则,这确实是一个干净的解决方案。至于我为什么不,我想这是我问题的一部分;是否有令人信服的理由不这样做。我想到的一个问题是,在没有必要的时候,用closes把代码弄得乱七八糟。
formatter.close();