final class UnsafeReflectionAccessor extends ReflectionAccessor
ReflectionAccessor
based on Unsafe
.
NOTE: This implementation is designed for Java 9. Although it should work with earlier Java releases, it is better to
use PreJava9ReflectionAccessor
for them.
Modifier and Type | Field and Description |
---|---|
private java.lang.reflect.Field |
overrideField |
private java.lang.Object |
theUnsafe |
private static java.lang.Class |
unsafeClass |
Constructor and Description |
---|
UnsafeReflectionAccessor() |
Modifier and Type | Method and Description |
---|---|
private static java.lang.reflect.Field |
getOverrideField() |
private static java.lang.Object |
getUnsafeInstance() |
void |
makeAccessible(java.lang.reflect.AccessibleObject ao)
Does the same as
ao.setAccessible(true) , but never throws
java.lang.reflect.InaccessibleObjectException |
(package private) boolean |
makeAccessibleWithUnsafe(java.lang.reflect.AccessibleObject ao) |
getInstance
private static java.lang.Class unsafeClass
private final java.lang.Object theUnsafe
private final java.lang.reflect.Field overrideField
public void makeAccessible(java.lang.reflect.AccessibleObject ao)
ao.setAccessible(true)
, but never throws
java.lang.reflect.InaccessibleObjectException
makeAccessible
in class ReflectionAccessor
boolean makeAccessibleWithUnsafe(java.lang.reflect.AccessibleObject ao)
private static java.lang.Object getUnsafeInstance()
private static java.lang.reflect.Field getOverrideField()