Package com.yahoo.jdisc
Class ReferencedResource<T extends SharedResource>
- java.lang.Object
-
- com.yahoo.jdisc.ReferencedResource<T>
-
- 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
SharedResource
s.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 Summary
Constructors Constructor Description ReferencedResource(T resource, ResourceReference reference)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
ResourceReference
getReference()
T
getResource()
-
-
-
Constructor Detail
-
ReferencedResource
public ReferencedResource(T resource, ResourceReference reference)
-
-
Method Detail
-
getResource
public T getResource()
-
getReference
public ResourceReference getReference()
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
-
-