On Wed, 2 Dec 2020 17:39:59 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:
> Additional changes may be needed to Class.permittedSubclasses() and/or > Class.isSealed() as part of fixing bug JDK-8256867. The JVM is being changed > to treat classes with empty PermittedSubclasses attributes as sealed classes > that cannot be extended (or implemented). > > Current thinking is that Class.permittedSubclasses() will return an empty > array for both non-sealed classes and for sealed classes with empty > PermittedSubclasses attributes. And, Class.isSealed() will return False in > the former case and True in the latter. This will require changing the > implementation of Class.isSealed() to call the JVM directly instead of > calling Class.permittedSubclasses(). > > Does this seem like a reasonable way to handle this corner case? I suggest `Class::getPermittedSubclasses` to return a `non-null` array if this `Class` is sealed, i.e. this class is derived from a `class` file with the presence of `PermittedSubclasses` attribute regardless of its content (the attribute could be empty or contains zero or more entries which is a properly loaded permitted subtype. If this `Class` is not sealed, `Class::getPermittedSubclasses` returns null. ------------- PR: https://git.openjdk.java.net/jdk/pull/1483