Package net.bytebuddy.dynamic.loading
Interface ClassInjector
-
- All Known Implementing Classes:
ClassInjector.AbstractBase,ClassInjector.UsingInstrumentation,ClassInjector.UsingLookup,ClassInjector.UsingReflection,ClassInjector.UsingUnsafe
public interface ClassInjectorA class injector is capable of injecting classes into a
ClassLoaderwithout requiring the class loader to being able to explicitly look up these classes.Important: Byte Buddy does not supply privileges when injecting code. When using a
SecurityManager, the user of this injector is responsible for providing access to non-public properties.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classClassInjector.AbstractBaseAn abstract base implementation of a class injector.static classClassInjector.UsingInstrumentationA class injector using aInstrumentationto append to either the boot classpath or the system class path.static classClassInjector.UsingLookupA class injector that uses ajava.lang.invoke.MethodHandles$Lookupobject for defining a class.static classClassInjector.UsingReflectionA class injector that uses reflective method calls.static classClassInjector.UsingUnsafeA class injector that usessun.misc.Unsafeto inject classes.
-
Field Summary
Fields Modifier and Type Field Description static booleanALLOW_EXISTING_TYPESDetermines the default behavior for type injections when a type is already loaded.static java.security.PermissionSUPPRESS_ACCESS_CHECKSA permission for thesuppressAccessCheckspermission.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.Map<TypeDescription,java.lang.Class<?>>inject(java.util.Map<? extends TypeDescription,byte[]> types)Injects the given types into the represented class loader.java.util.Map<java.lang.String,java.lang.Class<?>>injectRaw(java.util.Map<? extends java.lang.String,byte[]> types)Injects the given types into the represented class loader using a mapping from name to binary representation.booleanisAlive()Indicates if this class injector is available on the current VM.
-
-
-
Field Detail
-
SUPPRESS_ACCESS_CHECKS
static final java.security.Permission SUPPRESS_ACCESS_CHECKS
A permission for thesuppressAccessCheckspermission.
-
ALLOW_EXISTING_TYPES
static final boolean ALLOW_EXISTING_TYPES
Determines the default behavior for type injections when a type is already loaded.- See Also:
- Constant Field Values
-
-
Method Detail
-
isAlive
boolean isAlive()
Indicates if this class injector is available on the current VM.- Returns:
trueif this injector is available on the current VM.
-
inject
java.util.Map<TypeDescription,java.lang.Class<?>> inject(java.util.Map<? extends TypeDescription,byte[]> types)
Injects the given types into the represented class loader.- Parameters:
types- The types to load via injection.- Returns:
- The loaded types that were passed as arguments.
-
injectRaw
java.util.Map<java.lang.String,java.lang.Class<?>> injectRaw(java.util.Map<? extends java.lang.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.
-
-