2009/7/10 Shawn O. Pearce <spearce@xxxxxxxxxxx>: > Yann Simon <yann.simon.fr@xxxxxxxxx> wrote: > > > > However, using the trick newString = new String(aString.substring(), > > i) does not work on all JVM. > > With an IBM JVM, the newString will still contain the original array of chars. > > > > Another solution that work on all JVM could be: > > newString = new String(aString.substring(i).toCharArray()) > > Or > > newString = new String(aString.toCharArray(), i, aString.length() - i) > > > > I like the latter one. > > I prefer this. It should always do what we want, and at a lower > temporary memory footprint (one less copy of the name). IIRC Robin > rejected it earlier because it wasn't obvious what we were doing. I > say hogwash, its clear as mud. > > + private static String copy(final String src, final int off, final int end) { > + return new StringBuilder(end - off).append(src, off, end).toString(); > + } > + This method is quite clear. One line javadoc would make it even clearer... :p (and maybe make Robin happy) And you're right: by using a StringBuilder, we need one less arraycopy. After committing your change, we can remove the entry to silent FindBugs. (commit 21c3d82824075cd1f140b3bcf252dfaffe0fc96c) Yann -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html