Interface SafelyCloseable

All Superinterfaces:
AutoCloseable, Closeable
All Known Implementing Classes:
FileLinesByteArrayCollection.FileLinesIterator, FileLinesCollection.FileLinesIterator, FileLinesCollection.FileLinesIterator, OfflineIterable, OfflineIterable.OfflineIterator

public interface SafelyCloseable
extends Closeable
A marker interface for a closeable resource that implements safety measures to make resource tracking easier.

Classes implementing this interface must provide a safety-net finaliser—a finaliser that closes the resource and logs that resource should have been closed.

When the implementing class is abstract, concrete subclasses must call super.close() in their own Closeable.close() method to let the abstract class track correctly the resource. Moreover, they must run super.finalize() in their own finaliser (if any), as finalisation chaining is not automatic.

Note that if a concrete subclass implements readResolve(), it must call super.close(), or actually return this (i.e., the deserialised instance); otherwise, a spurious log could be generated when the deserialised instance is collected.

Sebastiano Vigna
  • Method Summary

    Methods inherited from interface