我有例如一个new Formatter(new StringWriter())
。我应该关闭格式化程序,即使它没有持有任何非内存资源吗?无论如何,关闭StringWriter都没有效果。
如果我将实现从StringWriter更改为其他内容,我可以想象以后忘记执行此操作。但另一方面,不必要的关闭只会使代码混乱。
答案 0 :(得分:0)
不,IMO没有令人信服的理由说明为什么应该在这种情况下关闭Formatter
。
如果你写了:
Writer formatted;
formatted = new StringWriter();
Formatter formatter = new Formatter(formatted, Locale.US);
然后可以说应该致电:
formatter.close();
即使它没有任何效果,因为现在formatted
变量被声明为接口类型Writer
,后来可以实现为真正的closable
类型,例如PrintWriter
。