public abstract class ReflectionAccessor
extends java.lang.Object
AccessibleObject.setAccessible(boolean)
, which may be used to
avoid reflective access issues appeared in Java 9, like java.lang.reflect.InaccessibleObjectException
thrown or warnings like
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by ...Works both for Java 9 and earlier Java versions.
Modifier and Type | Field and Description |
---|---|
private static ReflectionAccessor |
instance |
Constructor and Description |
---|
ReflectionAccessor() |
Modifier and Type | Method and Description |
---|---|
static ReflectionAccessor |
getInstance()
Obtains a
ReflectionAccessor instance suitable for the current Java version. |
abstract void |
makeAccessible(java.lang.reflect.AccessibleObject ao)
Does the same as
ao.setAccessible(true) , but never throws
java.lang.reflect.InaccessibleObjectException |
private static final ReflectionAccessor instance
public abstract void makeAccessible(java.lang.reflect.AccessibleObject ao)
ao.setAccessible(true)
, but never throws
java.lang.reflect.InaccessibleObjectException
public static ReflectionAccessor getInstance()
ReflectionAccessor
instance suitable for the current Java version.
You may need one a reflective operation in your code throws java.lang.reflect.InaccessibleObjectException
.
In such a case, use makeAccessible(AccessibleObject)
on a field, method or constructor
(instead of basic AccessibleObject.setAccessible(boolean)
).