Peter Becker wrote:
> kirk wrote:
>   
>> Peter Becker wrote:
>>   
>>     
>>> kirk wrote:
>>>   
>>>     
>>>       
>>>> [email protected] wrote:
>>>>   
>>>>     
>>>>       
>>>>         
>>>>> On Feb 17, 6:15 am, Alexander Snaps <[email protected]> wrote:
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>>>> On Sun, Feb 15, 2009 at 7:13 PM, Reinier Zwitserloot 
>>>>>> <[email protected]>wrote:
>>>>>>
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>>>> I mark any immutable class final, because if it isn't, then you can't
>>>>>>> rely on its immutability (any subclass is assignment compatible and is
>>>>>>> not neccessarily immutable!).
>>>>>>>       
>>>>>>>         
>>>>>>>           
>>>>>>>             
>>>>>>>               
>>>>>> While I tend to agree with marking "type" classes as final, I don't 
>>>>>> believe
>>>>>> that a class being immutable is reason enough to mark it final.
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>> If it's not final, it probably isn't immutable. Take java.io.File.
>>>>> Please.
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>> Marking a class as final is a whole different ball game than marking a 
>>>> variable as final. For example, marking String as final was a HUGE 
>>>> mistake IMHO. It prevented people from making some very useful 
>>>> extensions. It's also responsible for a lot of code bloat. I'm not 
>>>> against making a class final. That said, to do so because of the need to 
>>>> mother other developers shouldn't be one of them.
>>>>   
>>>>     
>>>>       
>>>>         
>>> If String wouldn't be final, then its immutability could not be 
>>> guaranteed, which would mean you
>>>   
>>>     
>>>       
>> final class doesn't mean the value is immutable, it means that the class 
>> cannot be extended.
>>   
>>     
> I'm aware of that, but if you don't put the "final" there even if you 
> write a perfectly immutable class yourself, you can still not assume 
> that all instances of it are immutable since subclasses might break that 
> assumption. 
and that is the responsibility of the sub-class, not my mother!


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to