Make ByteArrayOutputStream.ensureCapacity(int) protected?

Roger Riggs roger.riggs at oracle.com
Mon Jan 5 14:53:35 UTC 2026


Hi Daniel,

That seems reasonable, allowing control over the timing of resizes.
Making it public is sensible too.

 From a higher point of view, are you sure you want to be working with 
ByteArrayOutputStream and not ByteBuffer or Memory Segments? There are 
more performance possibilities with those APIs.

Regards, Roger


On 1/5/26 7:15 AM, Daniel Gredler wrote:
> Hi,
>
> I was recently looking at subclassing `ByteArrayOutputStream` in an 
> application so that I could add a fast VarHandle-based 
> `writeLong(long)` method (writing 8 bytes to the byte array in one 
> go). The internal `ByteArrayOutputStream` buffer is protected, so no 
> issue there, but `ensureCapacity(int)` is private rather than 
> protected, and uses the internal `ArraysSupport` class, so it's not 
> even easy to copy/paste as duplicate code in the subclass. Similar 
> `ensureCapacity` methods in `ArrayList` and `StringBuilder` are 
> public. Would a PR adjusting the visibility of this method from 
> private to protected be accepted?
>
> Take care,
>
> Daniel
>
>



More information about the core-libs-dev mailing list