< 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 >