public class ClassLoaderByteArrayInjector extends Object
ClassLoader
.
Note that the injector is only able to load classes in a linear manner. Thus, classes that refer to other classes which are not yet loaded cannot be injected but will result in a
NoClassDefFoundError
. This becomes
a problem when classes refer to each other using cyclic references. This injector can further not be applied to the
bootstrap class loader which is usually represented by a null
value and can therefore not be accessed by
reflection.Modifier and Type | Class and Description |
---|---|
protected class |
ClassLoaderByteArrayInjector.ClassLoadingAction
A privileged action for loading a class reflectively.
|
protected static interface |
ClassLoaderByteArrayInjector.ReflectionStore
A storage for method representations in order to access a class loader reflectively.
|
Constructor and Description |
---|
ClassLoaderByteArrayInjector(ClassLoader classLoader)
Creates a new injector for the given
ClassLoader and a default
ProtectionDomain . |
ClassLoaderByteArrayInjector(ClassLoader classLoader,
ProtectionDomain protectionDomain)
Creates a new injector for the given
ClassLoader and ProtectionDomain . |
Modifier and Type | Method and Description |
---|---|
static Map<TypeDescription,Class<?>> |
inject(ClassLoaderByteArrayInjector classLoaderByteArrayInjector,
Map<TypeDescription,byte[]> types)
Injects a given type mapping into a class loader byte array injector.
|
Class<?> |
inject(String name,
byte[] binaryRepresentation)
Explicitly loads a
Class by reflective access into the represented class loader. |
String |
toString() |
public ClassLoaderByteArrayInjector(ClassLoader classLoader)
ClassLoader
and a default
ProtectionDomain
.classLoader
- The ClassLoader
into which new class definitions are to be injected.public ClassLoaderByteArrayInjector(ClassLoader classLoader, ProtectionDomain protectionDomain)
ClassLoader
and ProtectionDomain
.classLoader
- The ClassLoader
into which new class definitions are to be injected.protectionDomain
- The protection domain to apply during class definition.public static Map<TypeDescription,Class<?>> inject(ClassLoaderByteArrayInjector classLoaderByteArrayInjector, Map<TypeDescription,byte[]> types)
classLoaderByteArrayInjector
- The target of the injection.types
- A mapping of types to their binary representation.public Class<?> inject(String name, byte[] binaryRepresentation)
Class
by reflective access into the represented class loader.name
- The fully qualified name of the Class
to be loaded.binaryRepresentation
- The type's binary representation.Copyright © 2014–2015. All rights reserved.