Class ReferencedResource<T extends SharedResource>

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class ReferencedResource<T extends SharedResource>
    extends java.lang.Object
    implements java.lang.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
    • Constructor Detail

      • ReferencedResource

        public ReferencedResource​(T resource,
                                  ResourceReference reference)
    • Method Detail

      • getResource

        public T getResource()
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable