Class SunUnsafeReflectionProvider
- java.lang.Object
-
- com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider
-
- com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
-
- com.thoughtworks.xstream.converters.reflection.SunUnsafeReflectionProvider
-
- All Implemented Interfaces:
ReflectionProvider
- Direct Known Subclasses:
Sun14ReflectionProvider
public class SunUnsafeReflectionProvider extends SunLimitedUnsafeReflectionProvider
Instantiates a new object bypassing the constructor using undocumented internal JDK features.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.
- Since:
- 1.4.7
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.thoughtworks.xstream.converters.reflection.ReflectionProvider
ReflectionProvider.Visitor
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map
fieldOffsetCache
-
Fields inherited from class com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
exception, unsafe
-
Fields inherited from class com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider
fieldDictionary
-
-
Constructor Summary
Constructors Constructor Description SunUnsafeReflectionProvider()
SunUnsafeReflectionProvider(FieldDictionary dic)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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)
-
Methods inherited from class com.thoughtworks.xstream.converters.reflection.SunLimitedUnsafeReflectionProvider
newInstance, validateFieldAccess
-
Methods inherited from class com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider
fieldDefinedInClass, fieldModifiersSupported, getField, getFieldOrNull, getFieldType, setFieldDictionary, visitSerializableFields
-
-
-
-
Constructor Detail
-
SunUnsafeReflectionProvider
public SunUnsafeReflectionProvider()
- Since:
- 1.4.7
-
SunUnsafeReflectionProvider
public SunUnsafeReflectionProvider(FieldDictionary dic)
- Since:
- 1.4.7
-
-
Method Detail
-
writeField
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)
- Specified by:
writeField
in interfaceReflectionProvider
- Overrides:
writeField
in classPureJavaReflectionProvider
-
write
private void write(java.lang.reflect.Field field, java.lang.Object object, java.lang.Object value)
-
getFieldOffset
private long getFieldOffset(java.lang.reflect.Field f)
-
readResolve
private java.lang.Object readResolve()
-
init
protected void init()
- Overrides:
init
in classPureJavaReflectionProvider
-
-