Class AccessibleInfo

java.lang.Object
org.apache.juneau.commons.reflect.ElementInfo
org.apache.juneau.commons.reflect.AccessibleInfo
Direct Known Subclasses:
ExecutableInfo, FieldInfo

public abstract class AccessibleInfo extends ElementInfo
Abstract base class for reflection info classes that wrap AccessibleObject.

This class extends ElementInfo to provide common functionality for reflection elements that can be made accessible (fields, methods, and constructors). It mirrors the AccessibleObject API, allowing private members to be accessed via reflection.

Features:
  • Accessibility control - make private members accessible
  • Security exception handling - gracefully handles security exceptions
  • Accessibility checking - check if an element is accessible
  • Fluent API - methods return this for method chaining
Use Cases:
  • Accessing private fields, methods, or constructors
  • Building frameworks that need to work with non-public members
  • Testing scenarios where private members need to be accessed
Usage:

// Make accessible AccessibleInfo ai = ...; ai.setAccessible(); // Makes private member accessible // Check accessibility if (! ai.isAccessible()) { ai.setAccessible(); } // Fluent API ai.accessible(); // Returns this after making accessible

Security:

The setAccessible() method attempts to make the element accessible and quietly ignores SecurityException if the security manager denies access. This allows code to work in both secure and non-secure environments.

See Also:
  • Constructor Details

  • Method Details

    • isAccessible

      public boolean isAccessible()
      Returns true if this object is accessible.

      This method was added in Java 9. For earlier versions, this always returns false.

      Example:

      // Check if accessible without security checks if (!accessibleInfo.isAccessible()) { accessibleInfo.setAccessible(); }

      Returns:
      true if this object is accessible, false otherwise or if not supported.
    • setAccessible

      public boolean setAccessible()
      Attempts to call x.setAccessible(true) and quietly ignores security exceptions.
      Returns:
      true if call was successful.