mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8238358: Implementation of JEP 371: Hidden Classes
Co-authored-by: Lois Foltan <lois.foltan@oracle.com> Co-authored-by: David Holmes <david.holmes@oracle.com> Co-authored-by: Harold Seigel <harold.seigel@oracle.com> Co-authored-by: Serguei Spitsyn <serguei.spitsyn@oracle.com> Co-authored-by: Alex Buckley <alex.buckley@oracle.com> Co-authored-by: Jamsheed Mohammed C M <jamsheed.c.m@oracle.com> Co-authored-by: Jan Lahoda <jan.lahoda@oracle.com> Co-authored-by: Amy Lu <amy.lu@oracle.com> Reviewed-by: alanb, cjplummer, coleenp, dholmes, dlong, forax, jlahoda, psandoz, plevart, sspitsyn, vromero
This commit is contained in:
parent
642041adbc
commit
7cc1371059
198 changed files with 9526 additions and 1575 deletions
|
@ -176,6 +176,12 @@ public class AccessibleObject implements AnnotatedElement {
|
|||
* to the caller and the package containing the declaring class is not open
|
||||
* to the caller's module. </p>
|
||||
*
|
||||
* <p> This method cannot be used to enable {@linkplain Field#set <em>write</em>}
|
||||
* access to a final field declared in a {@linkplain Class#isHidden() hidden class},
|
||||
* since such fields are not modifiable. The {@code accessible} flag when
|
||||
* {@code true} suppresses Java language access control checks to only
|
||||
* enable {@linkplain Field#get <em>read</em>} access to such fields.
|
||||
*
|
||||
* <p> If there is a security manager, its
|
||||
* {@code checkPermission} method is first called with a
|
||||
* {@code ReflectPermission("suppressAccessChecks")} permission.
|
||||
|
|
|
@ -721,10 +721,19 @@ class Field extends AccessibleObject implements Member {
|
|||
* the underlying field is inaccessible, the method throws an
|
||||
* {@code IllegalAccessException}.
|
||||
*
|
||||
* <p>If the underlying field is final, the method throws an
|
||||
* {@code IllegalAccessException} unless {@code setAccessible(true)}
|
||||
* has succeeded for this {@code Field} object
|
||||
* and the field is non-static. Setting a final field in this way
|
||||
* <p>If the underlying field is final, this {@code Field} object has
|
||||
* <em>write</em> access if and only if the following conditions are met:
|
||||
* <ul>
|
||||
* <li>{@link #setAccessible(boolean) setAccessible(true)} has succeeded for
|
||||
* this {@code Field} object;</li>
|
||||
* <li>the field is non-static; and</li>
|
||||
* <li>the field's declaring class is not a {@linkplain Class#isHidden()
|
||||
* hidden class}.</li>
|
||||
* </ul>
|
||||
* If any of the above checks is not met, this method throws an
|
||||
* {@code IllegalAccessException}.
|
||||
*
|
||||
* <p> Setting a final field in this way
|
||||
* is meaningful only during deserialization or reconstruction of
|
||||
* instances of classes with blank final fields, before they are
|
||||
* made available for access by other parts of a program. Use in
|
||||
|
@ -756,7 +765,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -791,7 +801,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -827,7 +838,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -863,7 +875,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -899,7 +912,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -935,7 +949,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -971,7 +986,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -1007,7 +1023,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
@ -1043,7 +1060,8 @@ class Field extends AccessibleObject implements Member {
|
|||
*
|
||||
* @throws IllegalAccessException if this {@code Field} object
|
||||
* is enforcing Java language access control and the underlying
|
||||
* field is either inaccessible or final.
|
||||
* field is either inaccessible or final;
|
||||
* or if this {@code Field} object has no write access.
|
||||
* @throws IllegalArgumentException if the specified object is not an
|
||||
* instance of the class or interface declaring the underlying
|
||||
* field (or a subclass or implementor thereof),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue