CharSequence.subSequence optimizations (original) (raw)

Aleksey Shipilev aleksey.shipilev at oracle.com
Thu Oct 29 17:46:39 UTC 2015


On 10/29/2015 01:36 PM, Pavel Rappo wrote:

On 29 Oct 2015, at 00:48, Aleksey Shipilev <aleksey.shipilev at oracle.com> wrote: Doesn't that break when CharSequence implementation is mutable? E.g. with StringBuilder, you cannot return "this" when "end == StringBuilder.length()" at the time of .subSequence() call. True. This trick cannot be used in cases where CharSequence is able to change its length. (As far as I understand, possible changes in contents are ok.)

While Javadoc appears silent on this front, the expectation seems to be that .subSequence returns the "detached" subsequence. See spec change here: https://bugs.openjdk.java.net/browse/JDK-8028757

So, I think this trick works only for the completely immutable CharSequences, which apparently includes only Strings. And, AFAIU from the code, String already returns "this" in cases like these?

Thanks, -Aleksey

P.S. I think it would be evil to turn subSequence into the forwarding view. These were considered before: http://mail.openjdk.java.net/pipermail/core-libs-dev/2014-July/027838.html



More information about the core-libs-dev mailing list