[ 
https://issues.apache.org/jira/browse/LANG-577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12794453#action_12794453
 ] 

Matt Benson commented on LANG-577:
----------------------------------

I'll buy this, because Java includes neither a StrongReference class nor the 
means to implement one.  Thanks!

> 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.0
>
>         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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to