Thread (10 messages) flat view 10 messages, 3 authors, 2016-06-15

Re: [PATCH] FindBugs: don't use new String(String) in RefDatabase

From: Yann Simon <hidden>
Date: 2016-06-15 22:47:03

2009/7/10 Shawn O. Pearce [off-list ref]:
 Yann Simon [off-list ref] 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help