[ https://issues.apache.org/jira/browse/LANG-577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13102209#comment-13102209 ]
Henri Yandell commented on LANG-577: ------------------------------------ Also, iiuc, while the interface might be the overlapping, the implementations won't be. I'm +1 for the feature. Matt called it a StrongReference - would that be a better name? Or is that implementation dependent (ie: MemoryReference would be a strong reference, but ObjectReference could be multiple types?) > Add ObjectReference interface and two implementations > ----------------------------------------------------- > > Key: LANG-577 > URL: https://issues.apache.org/jira/browse/LANG-577 > Project: Commons Lang > Issue Type: New Feature > Components: lang.* > Reporter: Joerg Schaible > Assignee: Joerg Schaible > Priority: Minor > Fix For: 3.x > > Attachments: reference.diff > > > In some situations it would be helpful to use a reference to an object, e.g. > for parameters by reference > {code:java} > void doSomething(ObjectReference<String> ref) { > ref.set("Hello"); > } > {code} > or for anonymous methods > {code:java} > final ObjectReference<String> ref = new MemoryReference<String>(); > final Runnable r = new Runnable() { > void run() { > ref.set("Hello"); > } > } > r.run(); > {code} > 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: > {code:Java} > /** > * 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); > } > {code} > 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. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira