Class JavaModule

java.lang.Object
net.bytebuddy.utility.JavaModule
All Implemented Interfaces:
AnnotationSource, NamedElement, NamedElement.WithOptionalName

public class JavaModule extends Object implements NamedElement.WithOptionalName, AnnotationSource
Type-safe representation of a java.lang.Module. On platforms that do not support the module API, modules are represented by null.
  • Field Details

    • UNSUPPORTED

      @AlwaysNull public static final JavaModule UNSUPPORTED
      Canonical representation of a Java module on a JVM that does not support the module API.
    • RESOLVER

      protected static final JavaModule.Resolver RESOLVER
      A dispatcher to resolve a Class's java.lang.Module.
    • MODULE

      protected static final JavaModule.Module MODULE
      A dispatcher to interact with java.lang.Module.
    • module

      private final AnnotatedElement module
      The java.lang.Module instance this wrapper represents.
  • Constructor Details

    • JavaModule

      protected JavaModule(AnnotatedElement module)
      Creates a new Java module representation.
      Parameters:
      module - The java.lang.Module instance this wrapper represents.
  • Method Details

    • doPrivileged

      @Enhance private static <T> T doPrivileged(PrivilegedAction<T> action)
      A proxy for java.security.AccessController#doPrivileged that is activated if available.
      Type Parameters:
      T - The type of the action's resolved value.
      Parameters:
      action - The action to execute from a privileged context.
      Returns:
      The action's resolved value.
    • ofType

      @MaybeNull public static JavaModule ofType(Class<?> type)
      Returns a representation of the supplied type's java.lang.Module or null if the current VM does not support modules.
      Parameters:
      type - The type for which to describe the module.
      Returns:
      A representation of the type's module or null if the current VM does not support modules.
    • of

      public static JavaModule of(Object module)
      Represents the supplied java.lang.Module as an instance of this class and validates that the supplied instance really represents a Java Module.
      Parameters:
      module - The module to represent.
      Returns:
      A representation of the supplied Java module.
    • isSupported

      public static boolean isSupported()
      Checks if the current VM supports the java.lang.Module API.
      Returns:
      true if the current VM supports modules.
    • isNamed

      public boolean isNamed()
      Returns true if this element has an explicit name.
      Specified by:
      isNamed in interface NamedElement.WithOptionalName
      Returns:
      true if this element has an explicit name.
    • getActualName

      public String getActualName()
      Returns the display name of this element as it is found in the source code. If no such name exists, an empty string is returned.
      Specified by:
      getActualName in interface NamedElement
      Returns:
      The name of this element as given in a Java program's source code.
    • getResourceAsStream

      @MaybeNull public InputStream getResourceAsStream(String name) throws IOException
      Returns a resource stream for this module for a resource of the given name or null if such a resource does not exist.
      Parameters:
      name - The name of the resource.
      Returns:
      An input stream for the resource or null if it does not exist.
      Throws:
      IOException - If an I/O exception occurs.
    • getClassLoader

      @MaybeNull public ClassLoader getClassLoader()
      Returns the class loader of this module.
      Returns:
      The class loader of the represented module.
    • unwrap

      public Object unwrap()
      Unwraps this instance to a java.lang.Module.
      Returns:
      The represented java.lang.Module.
    • canRead

      public boolean canRead(JavaModule module)
      Checks if this module can read the exported packages of the supplied module.
      Parameters:
      module - The module to check for its readability by this module.
      Returns:
      true if this module can read the supplied module.
    • isExported

      public boolean isExported(@MaybeNull PackageDescription packageDescription, JavaModule module)
      Returns true if this module exports the supplied package to this module.
      Parameters:
      packageDescription - The package to check for
      module - The target module.
      Returns:
      true if this module exports the supplied package to this module.
    • isOpened

      public boolean isOpened(@MaybeNull PackageDescription packageDescription, JavaModule module)
      Returns true if this module opens the supplied package to this module.
      Parameters:
      packageDescription - The package to check for.
      module - The target module.
      Returns:
      true if this module opens the supplied package to this module.
    • getDeclaredAnnotations

      public AnnotationList getDeclaredAnnotations()
      Returns a list of annotations that are declared by this instance.
      Specified by:
      getDeclaredAnnotations in interface AnnotationSource
      Returns:
      A list of declared annotations.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(@MaybeNull Object other)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object