Java 在这种情况下是否需要关闭StringReader?
Java 在这种情况下是否需要关闭StringReader?,java,xml,document,stringreader,Java,Xml,Document,Stringreader,StringReader扩展了Reader,它实现了Closeable 然而,仅仅通过查看源代码,您就会发现它所做的基本上是不相关的 Document doc = DocumentBuilderFactory.newInstance(). newDocumentBuilder(). parse(new InputSource(new StringReader(xml))); InputSource没有实现Closeable或AutoC
StringReader
扩展了Reader
,它实现了Closeable
然而,仅仅通过查看源代码,您就会发现它所做的基本上是不相关的
Document doc = DocumentBuilderFactory.newInstance().
newDocumentBuilder().
parse(new InputSource(new StringReader(xml)));
InputSource
没有实现Closeable
或AutoCloseable
,这意味着读取器仍然有责任关闭自身。然而,Reader
的另一个实现可能需要将其作为标准关闭
真正需要关闭的是FileReader
,这也是InputSource
可以接受的。StringReader从内存中的字符串读取。当你使用完文件描述符后,没有什么资源可以释放。是的,如果某个东西实现了Closeable,你应该关闭它。您可以查看当前的实现,然后说,在这种情况下关闭它没有任何帮助。但是封装允许实现改变。而try with resources块使关闭更容易。@AndyThomas所以您总是关闭java.util.stream.stream?@JBNizet-Fine。“如果某个东西实现了Closeable,您应该将其关闭——除非API文档明确表示,对于Stream来说,这是不必要的。”@JBNizet我认为在这种情况下关闭它是合适的,对于将来的重构,读取器
实现发生更改时,它会很方便。
public void close() {
str = null;
}