You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Stephen Colebourne <sc...@joda.org> on 2011/09/11 08:34:29 UTC
Re: [jira] [Commented] (LANG-577) Add ObjectReference interface and
two implementations
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) <ji...@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