--- old/src/java.base/share/classes/java/lang/reflect/Constructor.java 2018-03-06 15:23:27.000000000 -0800 +++ new/src/java.base/share/classes/java/lang/reflect/Constructor.java 2018-03-06 15:23:26.000000000 -0800 @@ -181,6 +181,12 @@ @CallerSensitive public void setAccessible(boolean flag) { AccessibleObject.checkPermission(); + + if (clazz.isValue()) { + throw new InaccessibleObjectException( + "Unable to make a value class constructor \"" + this + "\" accessible"); + } + if (flag) { checkCanSetAccessible(Reflection.getCallerClass()); } @@ -474,6 +480,11 @@ throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { + if (clazz.isValue()) { + throw new IllegalAccessException( + "cannot create new instance of value class " + clazz.getName()); + } + if (!override) { Class caller = Reflection.getCallerClass(); checkAccess(caller, clazz, clazz, modifiers);