On Mon, 3 Apr 2023 07:57:56 GMT, Per Minborg <pminb...@openjdk.org> wrote:

> Are there more places where we "accidentally" expose interfaces via 
> non-public (or even public) super classes?

Appendable was added as part of the scanning/formatting update in Java 5. It's 
intentional that SB implements Appendable but the intermediate/non-public 
superclass does complicate things. It makes it harder to reason about access 
control of public methods defined in the superclass, and problematic for 
javadoc. The funny thing is that the change that Joe has proposed here is what 
was discussed as a workaround in JDK-4983949 when it initially didn't show up 
in the javadoc. More discussion JDK-8224052 and JDK-8304060 for some of the 
challenges for javadoc.

Other examples are come up mind are
- j.u.concurrent.{Long,Double}{Adder,Accumulator} extend non-public Stripe64, 
Stripe64 extends Number
- j.t.chrono.XXXDate extends ChronoLocalDateImpl, ChronoLocalDateImpl 
implements several interfaces  

It's good question though, as it would be easy to "leak" an interface into the 
API.

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

PR Comment: https://git.openjdk.org/jdk/pull/13278#issuecomment-1494065784

Reply via email to