commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Colebourne <scolebou...@joda.org>
Subject Re: [jira] [Commented] (LANG-577) Add ObjectReference interface and two implementations
Date Sun, 11 Sep 2011 06:34:29 GMT
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) <jira@apache.org> 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: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message