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. So if you want an immutable class, then you have to
(a) make sure you write it immutable, and (b) make it final. And that's how the String class is done. A proper language concept of immutability would be much nicer, but it's not what was done. Peter --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
