< prev index next >

src/java.base/share/classes/java/lang/reflect/Constructor.java

Print this page

        

@@ -179,10 +179,16 @@
      */
     @Override
     @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());
         }
         setAccessible0(flag);
     }

@@ -472,10 +478,15 @@
     @ForceInline // to ensure Reflection.getCallerClass optimization
     public T newInstance(Object ... initargs)
         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);
         }
         if ((clazz.getModifiers() & Modifier.ENUM) != 0)
< prev index next >