Re: [jira] [Commented] (LANG-577) Add ObjectReference interface and two implementations

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [jira] [Commented] (LANG-577) Add ObjectReference interface and two implementations

jodastephen
Oracle advise using AtomicReference for any threaded cases, and we
have MutableObject for other cases. I'm very dubious about adding a
second version of the same class.
Stephen
Limited mobile access

On 11/09/2011, Henri Yandell (JIRA) <[hidden email]> wrote:

>
>     [
> 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
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]