On Fri, 16 Jan 2026 12:01:18 GMT, Daniel Gredler <[email protected]> wrote:

> By this do you mean that subclassing BAOS is not encouraged? In my experience 
> this is relatively common, and the class design seems to encourage it (the 
> class is not final, instance variables are protected).

Many JDK 1.0/1.1 were designed for subclassing. The java.io package has many 
non-final/sealed classes with protected fields so the subclass can access the 
byte[], position, mark, etc. If designed today then I'm sure they would look 
differently. OutputStream would probably be an interface and there would be 
factory methods, would not be synchronized, there would be a lot less decorator 
pattern.

I don't object to adding an ensureCapacity method but we need to think about 
whether to re-specify the existing methods writeXXX methods to invoke it. With 
the current proposal I can extend BAOS, override ensureCapacity, but it 
wouldn't be called when using the existing methods to write.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/29180#issuecomment-3759825378

Reply via email to