Details
-
New Feature
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
None
-
None
Description
In some situations it would be helpful to use a reference to an object, e.g. for parameters by reference
void doSomething(ObjectReference<String> ref) { ref.set("Hello"); }
or for anonymous methods
final ObjectReference<String> ref = new MemoryReference<String>(); final Runnable r = new Runnable() { void run() { ref.set("Hello"); } } r.run();
Additionally it is sometimes useful to keep the reference in other places than in shared memory, e.g. in a ThreadLocal or in case of a web application in a scoped reference or even in combination with some other persistence mechanism. Basically I am proposing the interface ObjectReference:
/** * Interface to reference an object. * * @param <T> the type of the referenced object * @author Apache Software Foundation * @since 3.0 */ public interface ObjectReference<T> { /** * Getter for the referenced object. * * @return the object or <code>null</code> */ T get(); /** * Setter for the reference. * * @param object the object to reference (may be <code>null</code>) */ void set(T object); }
and the two implementations MemoryReference and ThreadLocalReference in the new package org.apache.commons.lang3.reference. I've seen such or similar types in various libraries.
Comments?
Unit test will be provided also.