CharBuffer implementation of public default void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) uses absolute positioning for the indexes (i.e. ignores the current position).
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/X-Buffer.java.template#L1900-L1935 However, this is not consistent with the implementation of other CharSquence methods: https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/CharBuffer.html#charAt(int) https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/CharBuffer.html#length() https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/CharBuffer.html#subSequence(int,int) The codePoints and chars methods are also relative to the current position, but that is not explicitly called out in javadoc. Is this really intended? On Tue, Jul 1, 2025 at 11:29 AM Chen Liang <chen.l.li...@oracle.com> wrote: > > Hi Brett, I think your suggestion makes sense. I have created > https://bugs.openjdk.org/browse/JDK-8361209 to track this RFE. > Feel free to contribute a patch to implement this enhancement. > > ________________________________ > From: core-libs-dev <core-libs-dev-r...@openjdk.org> on behalf of Brett Okken > <brett.okken...@gmail.com> > Sent: Tuesday, July 1, 2025 9:57 AM > To: core-libs-dev <core-libs-dev@openjdk.org> > Subject: StringCharBuffer and bulk get > > jdk 25 introduced[1] a bulk getChars method to CharSequence[2]. > Should StringCharBuffer be updated to utilize that new method to > implement the bulk get method[3]? > That would presumably require changes to the private getArray[4]. > I think there could also be changes to putBuffer[5] for when the > target has an array. That array could be used for the getChars call. > > [1] - > https://github.com/openjdk/jdk/commit/7642556a5a131e9104033ad7d7abfdb4be5012cf > [2] - > https://download.java.net/java/early_access/jdk25/docs/api/java.base/java/lang/CharSequence.html#getChars(int,int,char%5B%5D,int) > [3] - > https://download.java.net/java/early_access/jdk25/docs/api/java.base/java/nio/CharBuffer.html#get(int,char%5B%5D,int,int) > [4] - > https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/X-Buffer.java.template#L953-L985 > [5] - > https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/X-Buffer.java.template#L1152-L1156