Interface ClassInjector
- All Known Implementing Classes:
ClassInjector.AbstractBase, ClassInjector.UsingInstrumentation, ClassInjector.UsingJna, ClassInjector.UsingLookup, ClassInjector.UsingReflection, ClassInjector.UsingUnsafe
public interface ClassInjector
A class injector is capable of injecting classes into a ClassLoader without
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 java.lang.SecurityManager,
the user of this injector is responsible for providing access to non-public properties.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classAn abstract base implementation of a class injector.static classA class injector using aInstrumentationto append to either the boot classpath or the system class path.static classA class injector using JNA to invoke JNI's define class utility for defining a class.static classA class injector that uses ajava.lang.invoke.MethodHandles$Lookupobject for defining a class.static classA class injector that uses reflective method calls.static classA class injector that usessun.misc.Unsafeorjdk.internal.misc.Unsafeto inject classes. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final booleanDetermines the default behavior for type injections when a type is already loaded. -
Method Summary
Modifier and TypeMethodDescriptionMap<TypeDescription, Class<?>> inject(Map<? extends TypeDescription, byte[]> types) Injects the given types into the represented class loader.Map<TypeDescription, Class<?>> inject(Set<? extends TypeDescription> types, ClassFileLocator classFileLocator) Injects the given types into the represented class loader.Injects the given types into the represented class loader.injectRaw(Set<String> names, ClassFileLocator classFileLocator) Injects the given types into the represented class loader.booleanisAlive()Indicates if this class injector is available on the current VM.
-
Field Details
-
ALLOW_EXISTING_TYPES
static final boolean ALLOW_EXISTING_TYPESDetermines the default behavior for type injections when a type is already loaded.- See Also:
-
-
Method Details
-
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
Map<TypeDescription, Class<?>> inject(Set<? extends TypeDescription> types, ClassFileLocator classFileLocator) Injects the given types into the represented class loader.- Parameters:
types- The types to load via injection.classFileLocator- The class file locator to use for resolving binary representations.- Returns:
- The loaded types that were passed as arguments.
-
injectRaw
Injects the given types into the represented class loader.- Parameters:
names- The names of the types to load via injection.classFileLocator- The class file locator to use for resolving binary representations.- Returns:
- The loaded types that were passed as arguments.
-
inject
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
-