I'd rather take a String anyway because it guarantees things that CharSequence doesn't.
I guess wanting to subclass to add methods just shows how useful extension methods will be. Doing it to make String mutable would stink. On Mar 1, 2012 2:05 PM, "Kevin Wright" <[email protected]> wrote: > > > On 1 March 2012 14:37, Reinier Zwitserloot <[email protected]> wrote: > >> On Thursday, March 1, 2012 12:20:26 PM UTC+1, KWright wrote: >>> >>> I never really had a big problem with String being final, although the >>> claims that it was for security reasons seem a bit weak given that strings >>> are also immutable. >>> >>> >> If String wasn't final, it would obviously not be immutable, duh. >> >>> >>>> >> > Not so, a thing can be both extensible and immutable. All that's > necessary is for the *members* of an immutable object to be final and for > methods to be pure, you can then happily subclass and add functionality to > your heart's extent. > > Some hypothetical SubclassedString won't necessarily be immutable, but it > shouldn't be able to mutate in a way that's visible to any method using it > typed as a String (otherwise you have an LSP violation). In the case of a > String, it's enough that the backing char[] and a few methods are marked > final. > > There's still value in subclassing an immutable object, such as access to > protected fields, or the ability to override a broken hashCode > implementation. > > -- > 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. > -- 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.
