Class ReferencedResource<T extends SharedResource>

  • All Implemented Interfaces:
    AutoCloseable

    public class ReferencedResource<T extends SharedResource>
    extends Object
    implements AutoCloseable

    Utility class for working with reference-counted SharedResources.

    Sometimes, you may want a method to return both a resource object and a ResourceReference that refers the resource object (for later release of the resource). Java methods cannot return multiple objects, so this class provides Pair-like functionality for returning both.

    Example usage:

         ReferencedResource<MyResource> getResource() {
             final ResourceReference ref = resource.refer();
             return new ReferencedResource(resource, ref);
         }
    
         void useResource() {
             final ReferencedResource<MyResource> referencedResource = getResource();
             referencedResource.getResource().use();
             referencedResource.getReference().close();
         }
     

    This class implements AutoCloseable, so the latter method may also be written as follows:

         void useResource() {
             for (final ReferencedResource<MyResource> referencedResource = getResource()) {
                 referencedResource.getResource().use();
             }
         }
     
    Author:
    bakksjo