On Sun, 20 Mar 2022 21:31:15 GMT, Joe Darcy <da...@openjdk.org> wrote:

> Small refactoring to use sealed classes in the MethodHandle implementation 
> hierarchy.
> 
> DelegatingMethodHandle is non-sealed rather than sealed since it has two 
> subclasses, one defined as a nested class and only a separate type in the 
> same package. The permits clause does not allow listed those two kinds of 
> subclasses.
> 
> Please also review the corresponding CSR 
> https://bugs.openjdk.java.net/browse/JDK-8283434

"DelegatingMethodHandle is non-sealed rather than sealed since it has two 
subclasses, one defined as a nested class and only a separate type in the same 
package. The permits clause does not allow listed those two kinds of 
subclasses."

We can have a permits clause that lists fully qualified class name for the 
nested class and simple name for that separate type in the same package, right?

Also

$ cd $jdk_src/src/java.base/share/classes/java/lang/invoke
$ grep "extends DelegatingMethodHandle" *
MethodHandleImpl.java:    private static final class AsVarargsCollector extends 
DelegatingMethodHandle {
MethodHandleImpl.java:    static class CountingWrapper extends 
DelegatingMethodHandle {
MethodHandleImpl.java:    private static final class WrappedMember extends 
DelegatingMethodHandle {
MethodHandleImpl.java:    static final class IntrinsicMethodHandle extends 
DelegatingMethodHandle 

All 4 are nested classes. Two of those subclasses are nested "private" in 
another class and hence cannot be referred from DelegatingMethodHandle's 
permits clause, right?

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

PR: https://git.openjdk.java.net/jdk/pull/7881

Reply via email to