RFR: 8017513: Support for closeable streams

Henry Jen henry.jen at oracle.com
Thu Jul 11 20:01:01 UTC 2013

On 07/11/2013 01:13 AM, Florian Weimer wrote:
> On 07/10/2013 11:30 PM, Henry Jen wrote:
>> A new interface, java.util.MayHoldCloseableResource, indicates an
>> implementation may or may not hold a resource need to be closed.
> Why doesn't close() throw Exception?

Because there is really much a developer can do on that situation. The
API simply make it not throw a *checked* exception.

See EG discussion on this topic,


>> Annotation {@link HoldsResource} may be used to guide users/static
>> analysis tools that a MHCR instance that definitely hold a Closeable
>> resource.
> All this looks a bit odd to me.  I suppose the idea is that you don't
> want to give up the last reference to a closeable resource without
> calling close()—and not leak references which out-live the call to
> close().  This is definitely not a property of the type of the resource,
> so I don't see why the MayHoldCloseableResource interface is needed (or
> can confer relevant information).  The HoldsResource annotation could be
> useful, but based on the current documentation, it's not clear if it is
> actually intended to express the data flow property.

I would suggest you look at EG discussion on this topic. The MHCR is
different from AutoCloseable on the chances of holding critical resources.

Perhaps that suggests the javadoc is not clear enough, I would like to
know what is important and missing.


More information about the core-libs-dev mailing list