Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这种情况下是否需要关闭StringReader?_Java_Xml_Document_Stringreader - Fatal编程技术网

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;
}