- java.lang.Object
-
- com.google.gson.internal.reflect.ReflectionAccessor
-
- Direct Known Subclasses:
PreJava9ReflectionAccessor,UnsafeReflectionAccessor
public abstract class ReflectionAccessor extends java.lang.ObjectProvides a replacement forAccessibleObject.setAccessible(boolean), which may be used to avoid reflective access issues appeared in Java 9, likeInaccessibleObjectExceptionthrown or warnings likeWARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by ...
Works both for Java 9 and earlier Java versions.
-
-
Field Summary
Fields Modifier and Type Field Description private static ReflectionAccessorinstance
-
Constructor Summary
Constructors Constructor Description ReflectionAccessor()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static ReflectionAccessorgetInstance()Obtains aReflectionAccessorinstance suitable for the current Java version.abstract voidmakeAccessible(java.lang.reflect.AccessibleObject ao)Does the same asao.setAccessible(true), but never throwsInaccessibleObjectException
-
-
-
Field Detail
-
instance
private static final ReflectionAccessor instance
-
-
Method Detail
-
makeAccessible
public abstract void makeAccessible(java.lang.reflect.AccessibleObject ao)
Does the same asao.setAccessible(true), but never throwsInaccessibleObjectException
-
getInstance
public static ReflectionAccessor getInstance()
Obtains aReflectionAccessorinstance suitable for the current Java version.You may need one a reflective operation in your code throws
InaccessibleObjectException. In such a case, usemakeAccessible(AccessibleObject)on a field, method or constructor (instead of basicAccessibleObject.setAccessible(boolean)).
-
-