Package net.bytebuddy.dynamic.loading
Class ClassInjector.UsingReflection
- java.lang.Object
-
- net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
-
- net.bytebuddy.dynamic.loading.ClassInjector.UsingReflection
-
- All Implemented Interfaces:
ClassInjector
- Enclosing interface:
- ClassInjector
@Enhance public static class ClassInjector.UsingReflection extends ClassInjector.AbstractBase
A class injector that uses reflective method calls.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interface
ClassInjector.UsingReflection.Dispatcher
A dispatcher for accessing aClassLoader
reflectively.-
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.loading.ClassInjector
ClassInjector.AbstractBase, ClassInjector.UsingInstrumentation, ClassInjector.UsingLookup, ClassInjector.UsingReflection, ClassInjector.UsingUnsafe
-
-
Field Summary
-
Fields inherited from interface net.bytebuddy.dynamic.loading.ClassInjector
ALLOW_EXISTING_TYPES, SUPPRESS_ACCESS_CHECKS
-
-
Constructor Summary
Constructors Constructor Description UsingReflection(ClassLoader classLoader)
Creates a new injector for the givenClassLoader
and a defaultProtectionDomain
and a trivialPackageDefinitionStrategy
which does not trigger an error when discovering existent classes.UsingReflection(ClassLoader classLoader, ProtectionDomain protectionDomain)
Creates a new injector for the givenClassLoader
and a defaultPackageDefinitionStrategy
where the injection of existent classes does not trigger an error.UsingReflection(ClassLoader classLoader, ProtectionDomain protectionDomain, PackageDefinitionStrategy packageDefinitionStrategy, boolean forbidExisting)
Creates a new injector for the givenClassLoader
andProtectionDomain
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.boolean
isAlive()
Indicates if this class injector is available on the current VM.static boolean
isAvailable()
Indicates if this class injection is available on the current VM.static ClassInjector
ofSystemClassLoader()
Creates a class injector for the system class loader.-
Methods inherited from class net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
inject
-
-
-
-
Constructor Detail
-
UsingReflection
public UsingReflection(ClassLoader classLoader)
Creates a new injector for the givenClassLoader
and a defaultProtectionDomain
and a trivialPackageDefinitionStrategy
which does not trigger an error when discovering existent classes.- Parameters:
classLoader
- TheClassLoader
into which new class definitions are to be injected. Must not be the bootstrap loader.
-
UsingReflection
public UsingReflection(ClassLoader classLoader, ProtectionDomain protectionDomain)
Creates a new injector for the givenClassLoader
and a defaultPackageDefinitionStrategy
where the injection of existent classes does not trigger an error.- Parameters:
classLoader
- TheClassLoader
into which new class definitions are to be injected. Must not be the bootstrap loader.protectionDomain
- The protection domain to apply during class definition.
-
UsingReflection
public UsingReflection(ClassLoader classLoader, ProtectionDomain protectionDomain, PackageDefinitionStrategy packageDefinitionStrategy, boolean forbidExisting)
Creates a new injector for the givenClassLoader
andProtectionDomain
.- Parameters:
classLoader
- TheClassLoader
into which new class definitions are to be injected.Must not be the bootstrap loader.protectionDomain
- The protection domain to apply during class definition.packageDefinitionStrategy
- The package definer to be queried for package definitions.forbidExisting
- Determines if an exception should be thrown when attempting to load a type that already exists.
-
-
Method Detail
-
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()
Indicates if this class injection is available on the current VM.- Returns:
true
if this class injection is available.
-
ofSystemClassLoader
public static ClassInjector ofSystemClassLoader()
Creates a class injector for the system class loader.- Returns:
- A class injector for the system class loader.
-
-