Code review request for 6543593 "(reflect) Clarify private final field mutability"

Joe Darcy joe.darcy at oracle.com
Mon Apr 4 06:32:32 UTC 2011


Hello.

Please review the more precise wording added to java.lang.reflect.Field 
to address bug

    6543593 "(reflect) Clarify private final field mutability"
    http://cr.openjdk.java.net/~darcy/6543593.0/

Full patch below.

In describing when IllegalAccessException is thrown, Field now uses 
phrasing consistent with that used by its sibling classes Method and 
Constructor:

"if this Method object enforces Java language access control and the 
underlying method is inaccessible."
"if this Constructor object enforces Java language access control and 
the underlying constructor is inaccessible."

Thanks,

-Joe

--- old/src/share/classes/java/lang/reflect/Field.java    2011-04-03 
23:25:40.000000000 -0700
+++ new/src/share/classes/java/lang/reflect/Field.java    2011-04-03 
23:25:39.000000000 -0700
@@ -360,8 +360,9 @@
      * {@code obj}; primitive values are wrapped in an appropriate
      * object before being returned
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof).
@@ -383,8 +384,9 @@
      * from
      * @return the value of the {@code boolean} field
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -410,8 +412,9 @@
      * from
      * @return the value of the {@code byte} field
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -439,8 +442,9 @@
      * from
      * @return the value of the field converted to type {@code char}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -468,8 +472,9 @@
      * from
      * @return the value of the field converted to type {@code short}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -497,8 +502,9 @@
      * from
      * @return the value of the field converted to type {@code int}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -526,8 +532,9 @@
      * from
      * @return the value of the field converted to type {@code long}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -555,8 +562,9 @@
      * from
      * @return the value of the field converted to type {@code float}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -584,8 +592,9 @@
      * from
      * @return the value of the field converted to type {@code double}
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is not
      *              an instance of the class or interface declaring the
      *              underlying field (or a subclass or implementor
@@ -626,9 +635,9 @@
      * {@code IllegalAccessException}.
      *
      * <p>If the underlying field is final, the method throws an
-     * {@code IllegalAccessException} unless
-     * {@code setAccessible(true)} has succeeded for this field
-     * and this field is non-static. Setting a final field in this way
+     * {@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
      * 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
@@ -658,8 +667,9 @@
      * @param value the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -686,8 +696,9 @@
      * @param z   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -715,8 +726,9 @@
      * @param b   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -744,8 +756,9 @@
      * @param c   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -773,8 +786,9 @@
      * @param s   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -802,8 +816,9 @@
      * @param i   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -831,8 +846,9 @@
      * @param l   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -860,8 +876,9 @@
      * @param f   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),
@@ -889,8 +906,9 @@
      * @param d   the new value for the field of {@code obj}
      * being modified
      *
-     * @exception IllegalAccessException    if the underlying field
-     *              is inaccessible.
+     * @exception IllegalAccessException    if this {@code Field} object
+     *              enforces Java language access control and the 
underlying
+     *              field is inaccessible.
      * @exception IllegalArgumentException  if the specified object is 
not an
      *              instance of the class or interface declaring the 
underlying
      *              field (or a subclass or implementor thereof),




More information about the core-libs-dev mailing list