Class ReferencedResource<T extends SharedResource>

java.lang.Object
com.yahoo.jdisc.ReferencedResource<T>
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
  • Constructor Details

    • ReferencedResource

      public ReferencedResource(T resource, ResourceReference reference)
  • Method Details