Some Classes with a public void close() don't implement AutoCloseable
Alan Bateman
Alan.Bateman at oracle.com
Wed Apr 22 13:12:01 UTC 2020
On 22/04/2020 13:50, Andrew Haley wrote:
> :
> 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?
>
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.
-Alan.
More information about the core-libs-dev
mailing list