Class ReflectionAccessor

  • Direct Known Subclasses:
    PreJava9ReflectionAccessor, UnsafeReflectionAccessor

    public abstract class ReflectionAccessor
    extends java.lang.Object
    Provides a replacement for AccessibleObject.setAccessible(boolean), which may be used to avoid reflective access issues appeared in Java 9, like 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.

    • Constructor Detail

      • ReflectionAccessor

        public ReflectionAccessor()
    • Method Detail

      • makeAccessible

        public abstract void makeAccessible​(java.lang.reflect.AccessibleObject ao)
        Does the same as ao.setAccessible(true), but never throws InaccessibleObjectException
      • getInstance

        public static ReflectionAccessor getInstance()
        Obtains a ReflectionAccessor instance suitable for the current Java version.

        You may need one a reflective operation in your code throws InaccessibleObjectException. In such a case, use makeAccessible(AccessibleObject) on a field, method or constructor (instead of basic AccessibleObject.setAccessible(boolean)).