Class ClassInjector.UsingUnsafe

java.lang.Object
net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
net.bytebuddy.dynamic.loading.ClassInjector.UsingUnsafe
All Implemented Interfaces:
ClassInjector
Enclosing interface:
ClassInjector

@Enhance public static class ClassInjector.UsingUnsafe extends ClassInjector.AbstractBase
A class injector that uses sun.misc.Unsafe or jdk.internal.misc.Unsafe to inject classes.
  • Field Details

  • Constructor Details

    • UsingUnsafe

      public UsingUnsafe(@MaybeNull ClassLoader classLoader)
      Creates a new unsafe injector for the given class loader with a default protection domain.
      Parameters:
      classLoader - The class loader to inject classes into or null for the bootstrap loader.
    • UsingUnsafe

      public UsingUnsafe(@MaybeNull ClassLoader classLoader, @MaybeNull ProtectionDomain protectionDomain)
      Creates a new unsafe injector for the given class loader with a default protection domain.
      Parameters:
      classLoader - The class loader to inject classes into or null for the bootstrap loader.
      protectionDomain - The protection domain to use or null for no protection domain.
    • UsingUnsafe

      protected UsingUnsafe(@MaybeNull ClassLoader classLoader, @MaybeNull ProtectionDomain protectionDomain, ClassInjector.UsingUnsafe.Dispatcher.Initializable dispatcher)
      Creates a new unsafe injector for the given class loader with a default protection domain.
      Parameters:
      classLoader - The class loader to inject classes into or null for the bootstrap loader.
      protectionDomain - The protection domain to use or null for no protection domain.
      dispatcher - The dispatcher to use.
  • 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.
    • isAlive

      public boolean isAlive()
      Indicates if this class injector is available on the current VM.
      Returns:
      true if this injector is available on the current VM.
    • injectRaw

      public Map<String,Class<?>> injectRaw(Map<? extends String,byte[]> types)
      Injects the given types into the represented class loader using a mapping from name to binary representation.
      Parameters:
      types - The types to load via injection.
      Returns:
      The loaded types that were passed as arguments.
    • isAvailable

      public static boolean isAvailable()
      Checks if unsafe class injection is available on the current VM.
      Returns:
      true if unsafe class injection is available on the current VM.
    • ofSystemLoader

      public static ClassInjector ofSystemLoader()
      Returns an unsafe class injector for the system class loader.
      Returns:
      A class injector for the system class loader.
    • ofPlatformLoader

      public static ClassInjector ofPlatformLoader()
      Returns an unsafe class injector for the platform class loader. For VMs of version 8 or older, the extension class loader is represented instead.
      Returns:
      A class injector for the platform class loader.
    • ofBootLoader

      public static ClassInjector ofBootLoader()
      Returns an unsafe class injector for the boot class loader.
      Returns:
      A class injector for the boot loader.