ByteVector | A growable array of bytes. | code | html |
ClassFileConstants | Minimal set of class file constants for assembly of field and method accessors. | code | html |
ConstructorAccessor | This interface provides the declaration for java.lang.reflect.Constructor.invoke(). | code | html |
FieldAccessor | This interface provides the declarations for the accessor methods of java.lang.reflect.Field. | code | html |
LangReflectAccess | An interface which gives privileged packages Java-level access to internals of java.lang.reflect. | code | html |
MethodAccessor | This interface provides the declaration for java.lang.reflect.Method.invoke(). | code | html |
ConstructorAccessorImpl | Package-private implementation of the ConstructorAccessor interface which has access to all classes and all fields, regardless of language restrictions. | code | html |
FieldAccessorImpl | Package-private implementation of the FieldAccessor interface which has access to all classes and all fields, regardless of language restrictions. | code | html |
MethodAccessorImpl | Package-private implementation of the MethodAccessor interface which has access to all classes and all fields, regardless of language restrictions. |
code | html |
SerializationConstructorAccessorImpl | Java serialization (in java.io) expects to be able to instantiate a class and invoke a no-arg constructor of that class's first non-Serializable superclass. |
code | html |
UnsafeFieldAccessorImpl | Base class for sun.misc.Unsafe-based FieldAccessors. | code | html |
UnsafeQualifiedFieldAccessorImpl | Base class for sun.misc.Unsafe-based FieldAccessors for fields with final or volatile qualifiers. | code | html |
UnsafeQualifiedStaticFieldAccessorImpl | Base class for sun.misc.Unsafe-based FieldAccessors for final or volatile static fields. | code | html |
UnsafeStaticFieldAccessorImpl | Base class for sun.misc.Unsafe-based FieldAccessors for static fields. | code | html |
Licensee impact of JDK 1.4 reflection changes
Sun's JDK 1.4 contains a new implementation of java.lang.reflect which offers substantially higher performance than previous JDKs' native code. Licensees can at their discretion port these changes. There are no public API or documentation changes associated with the new reflection implementation aside from a few minor clarifications in the specifications of Method.invoke(), Constructor.newInstance(), and a few methods in java.lang.reflect.Field.
The bulk of the new implementation is Java programming language code which generates bytecodes, and is therefore portable. If licensees desire to port it, the following JVM changes are required:
The following changes were discovered to be necessary for backward compatibility with certain applications (see bug 4474172):
The following JVM entry points may be deleted:
To keep using the previous reflection implementation, licensees should not take changes from Sun's JDK 1.4 relating specifically to the implementation of reflection in the following classes/methods and any associated native code: