On Fri, Mar 5, 2010 at 11:12 AM, Jörg Schaible <joerg.schai...@gmx.de> wrote: > Henri Yandell wrote at Freitag, 5. März 2010 10:32: > >> Thinking further on moving StringUtils to CharSequence, I'd like to >> take the String left(String, int) method as an example. It depends on >> substring(int, int), so is entirely possibly to move over to >> subSequence(int, int). >> >> Hypothetical new method: >> >> CharSequence left(CharSequence, int) >> >> The downside here is that users currently storing this in a String are >> going to have to cast. Generics to the rescue. >> >> <T extends CharSequence> T left(T, int) >> >> This hits two problems: >> >> 1) EMPTY is returned when the int is less than 0; EMPTY is a String and >> not T. >> 2) subSequence returns CharSequence and not T. > > Because you do not necessarily get the same type. The API gives room for > optimized types. > >> I could add a wrapper method to make Strings nicer: >> >> public static String left(String str, int len) { >> if (str == null) { >> return null; >> } >> return left( (CharSequence) str, len).toString(); >> } >> >> But that doesn't help the StringBuffer/StrBuilder/StringBuilder user; >> they still get a sucky API. >> >> Am I missing anything obvious here, or should I give up the ghost on >> trying to take these methods to CharSequence APIs? > > Since the most important implementations (String/StringBuilder/StringBuffer) > all return effectively a String,
Hmmm - I expected/assumed it would return the same type. Niall > you may actually return one also: > > public static String left(CharSequence str, int len) { > if (str == null) { > return null; > } > return str.subSequence(0, len).toString(); > } > > Opinions? > > - Jörg > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org