On Fri, Nov 22, 2024 at 4:47 AM Joseph D. Darcy <joe.da...@oracle.com>
wrote:

> PS it would be a "small matter of programming" to write an annotation
> processor to find the not subclassable public classes in the JDK that were
> not marked final.
>
Joe, your bait was too hard to resist.

These are the non-final, not subclassable, public, non-enum classes, in
packages with unqualified exports in java.base:

java.lang.invoke.MethodHandleProxies
java.lang.invoke.MethodHandles
java.lang.Runtime
java.nio.charset.CodingErrorAction
java.nio.charset.CoderResult
java.lang.constant.DynamicCallSiteDesc
java.lang.reflect.Modifier
java.lang.runtime.ObjectMethods
java.lang.runtime.SwitchBootstraps
java.net.URLDecoder
java.net.URLEncoder
java.security.DrbgParameters
java.util.Base64
java.util.Collections
java.util.FormattableFlags
java.util.concurrent.Executors
java.util.concurrent.locks.LockSupport

All of these compiles fine with final added. (Note a subclass can access a
private constructor if enclosed by the same class (is this called a nest?)

What is the compatibility impact of adding final to the above classes. It
will perhaps require a CSR in any case?

Cheers,
Eirik.

Reply via email to