public class SunUnsafeReflectionProvider extends SunLimitedUnsafeReflectionProvider
The code in the constructor will never be executed and parameters do not have to be known. This is the same method used by the internals of standard Java serialization, but relies on internal code (sun.misc.Unsafe) that may not be present on all JVMs.
The implementation will use the same internals to write into fields. This is a lot faster and was additionally the only possibility to set final fields prior to Java 5.
ReflectionProvider.Visitor
Modifier and Type | Field and Description |
---|---|
private java.util.Map |
fieldOffsetCache |
exception, unsafe
fieldDictionary
Constructor and Description |
---|
SunUnsafeReflectionProvider() |
SunUnsafeReflectionProvider(FieldDictionary dic) |
Modifier and Type | Method and Description |
---|---|
private long |
getFieldOffset(java.lang.reflect.Field f) |
protected void |
init() |
private java.lang.Object |
readResolve() |
private void |
write(java.lang.reflect.Field field,
java.lang.Object object,
java.lang.Object value) |
void |
writeField(java.lang.Object object,
java.lang.String fieldName,
java.lang.Object value,
java.lang.Class definedIn) |
newInstance, validateFieldAccess
fieldDefinedInClass, fieldModifiersSupported, getField, getFieldOrNull, getFieldType, setFieldDictionary, visitSerializableFields
public SunUnsafeReflectionProvider()
public SunUnsafeReflectionProvider(FieldDictionary dic)
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)
writeField
in interface ReflectionProvider
writeField
in class PureJavaReflectionProvider
private void write(java.lang.reflect.Field field, java.lang.Object object, java.lang.Object value)
private long getFieldOffset(java.lang.reflect.Field f)
private java.lang.Object readResolve()
protected void init()
init
in class PureJavaReflectionProvider