diff --git a/src/java.base/share/classes/java/lang/reflect/Deconstructor.java b/src/java.base/share/classes/java/lang/reflect/Deconstructor.java index c11ab094bde..83c469fc336 100644 --- a/src/java.base/share/classes/java/lang/reflect/Deconstructor.java +++ b/src/java.base/share/classes/java/lang/reflect/Deconstructor.java @@ -426,8 +426,8 @@ public Object[] invoke(Object matchCandidate) String underlyingName = mangle(this.getDeclaringClass(), Arrays.stream(getPatternBindings()).map(pb -> pb.getType()).toArray(Class[]::new)); try { - Method method = this.getDeclaringClass().getMethod(underlyingName, matchCandidate.getClass()); - + Method method = this.getDeclaringClass().getDeclaredMethod(underlyingName, matchCandidate.getClass()); + method.setAccessible(override); Object carrier = method.invoke(matchCandidate, matchCandidate); Class[] bindingClasses = Arrays.stream(this.getPatternBindings()).map(d -> d.getType()).toArray(Class[]::new); diff --git a/test/jdk/java/lang/reflect/Deconstructor/SimpleDeconstructorsTest.java b/test/jdk/java/lang/reflect/Deconstructor/SimpleDeconstructorsTest.java index 923e5f6a858..37a1dbe3673 100644 --- a/test/jdk/java/lang/reflect/Deconstructor/SimpleDeconstructorsTest.java +++ b/test/jdk/java/lang/reflect/Deconstructor/SimpleDeconstructorsTest.java @@ -25,7 +25,6 @@ * @test * @summary SimpleDeconstructorsTest * @enablePreview - * @compile --enable-preview --source ${jdk.version} -parameters SimpleDeconstructorsTest.java * @run main/othervm --enable-preview SimpleDeconstructorsTest */ @@ -191,14 +190,16 @@ public static class Bug { public Bug(int i) { this.i = i; } - public pattern Bug(int i) { + private pattern Bug(int i) { match Bug(this.i); } } public static void testGetDeclaredDeconstructors_bug3() throws IllegalAccessException { var b = new Bug(2); - var x = Bug.class.getDeclaredDeconstructors()[0].invoke(b); + Deconstructor declaredDeconstructor = Bug.class.getDeclaredDeconstructors()[0]; + declaredDeconstructor.setAccessible(true); + var x = declaredDeconstructor.invoke(b); assertEquals(x[0], 2); }