On 22/04/2020 13:50, Andrew Haley wrote:
I'm sure Joe Darcy can say more on this but I remember there was a lot of effort put into this topic when AutoCloseable was added in Java 7 (and Project Coin). Closeable close is idempotent but AutoCloseable close could not require it. AutoCloseable's API docs recommend it of course. There was effort in Java 7 and beyond to retrofit existing classes that defined a close method to be Closeable or AutoCloseable. There are only a handful of exported APIs remaining that have a close method that don't extend or implement AutoCloseable. I don't know the history of the XML stream interface to know why they close to define them not to close the underlying stream but I doubt these could be changed now.: 1. Should close() always be idempotent, where practical? I would have thought so, but perhaps there are downsides.2. Should classes which implement close() with the standard meaning be AutoCloseable?
-Alan.
