public class ReferencedResource<T extends SharedResource> extends Object implements 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(); } }
Modifier and Type | Field and Description |
---|---|
private ResourceReference |
reference |
private T |
resource |
Constructor and Description |
---|
ReferencedResource(T resource,
ResourceReference reference) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
ResourceReference |
getReference() |
T |
getResource() |
private final T extends SharedResource resource
private final ResourceReference reference
public ReferencedResource(T resource, ResourceReference reference)
public T getResource()
public ResourceReference getReference()
public void close()
close
in interface AutoCloseable
Copyright © 2017. All rights reserved.