Yes, that was my proposal. But you are right in that putting methods with
spooky effects outside the main class may be misleading.

2010/3/26 Ray Ryan <[email protected]>

> If at the end of the day freezing is going to have a side effect on the
> original collection, moving the freeze call to a static method seems pretty
> mysterious to me. I think you just suggested something like this pseudocode:
>
> MutableArray myArray = new Array("able", "baker", "charlie");
> ImmutableArray solid = Collections.freeze(myArray);
> myArray.add("delta"); // assertion fails
>
> That indirection of that side effect seems worse than it would be from an
> instance method, where it's much more intuitive that I'm messing with the
> object itself.
>
> Did I misread?
>
> FWIW, I'm pretty solidly with Bruce now.
>
> rjrjr
>
>
> On Fri, Mar 26, 2010 at 9:01 AM, Rodrigo Chandia <[email protected]>wrote:
>
>> I like having an absolutely most efficient way to take my data from a
>> mutable array into an immutable one called freeze. I also believe that
>> freezing should not be the only way to obtain immutable objects.
>>
>> I propose moving the freeze operation to a static method in Collections.
>> This is my way to say freezing should not be an inherent property of mutable
>> arrays (but support for the frozen assertions is). Building an immutable
>> collection by copy, using a builder object, or any other means should be on
>> equal footing to freezing, as an external operation.
>>
>> The implementation plan then will be (in order):
>>
>> * ImmutableArray + freezing
>> * Maps, Mutable Maps
>> * Immutable Maps + freezing
>> * Revisit builders, immutability and how it relates to operations (aka
>> Actions) such as map, filter, reduce, etc.
>> * Actions and Predicates
>>
>> Rodrigo
>>
>> 2010/3/25 Bruce Johnson <[email protected]>
>>
>>> What John said. JSO cross-casts allow this.
>>>
>>>
>>> On Thursday, March 25, 2010, John Tamplin <[email protected]> wrote:
>>> > On Thu, Mar 25, 2010 at 6:07 PM, Rodrigo Chandia <[email protected]>
>>> wrote:
>>> >
>>> >
>>> > (Sorry for the spam, Bruce. I forgot to press reply to all.)
>>> >
>>> > I seem to be missing some piece from the puzzle: in which way does
>>> > freezing a MutableArray prevent the allocation of an ImmutableArray
>>> > object?
>>> >
>>> > // This creates a new MutableArray instance
>>> > MutableArray ma = CollectionsFactory.createMutableArray();
>>> > ma.add("x");
>>> > ma.add("y");
>>> > ...
>>> > // But freezing will also instantiate another object, right?
>>> > ImmutableArray ia = ma.freeze();
>>> >
>>> > Internally, freeze will perform something like:
>>> >
>>> > return new ImmutableArrayImpl<E>(elem);
>>> >
>>> > Or is it that in prod mode we can do special tricks to avoid the
>>> creation?
>>> > In Javascript, you simply cast MutableArray to ImmutableArrayImpl and
>>> return the same object.
>>> >
>>> >
>>> > --
>>> > John A. Tamplin
>>> > Software Engineer (GWT), Google
>>> >
>>> >
>>> > --
>>> > http://groups.google.com/group/Google-Web-Toolkit-Contributors
>>> >
>>> > To unsubscribe from this group, send email to
>>> google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to
>>> this email with the words "REMOVE ME" as the subject.
>>> >
>>>
>>> --
>>> http://groups.google.com/group/Google-Web-Toolkit-Contributors
>>>
>>> To unsubscribe from this group, send email to
>>> google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to
>>> this email with the words "REMOVE ME" as the subject.
>>>
>>
>>  --
>> http://groups.google.com/group/Google-Web-Toolkit-Contributors
>>
>> To unsubscribe from this group, send email to
>> google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to
>> this email with the words "REMOVE ME" as the subject.
>>
>
>  --
> http://groups.google.com/group/Google-Web-Toolkit-Contributors
>
> To unsubscribe from this group, send email to
> google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to
> this email with the words "REMOVE ME" as the subject.
>

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words "REMOVE ME" as the subject.

Reply via email to