public static enum ClassLoadingStrategy.Default extends Enum<ClassLoadingStrategy.Default> implements ClassLoadingStrategy.Configurable<ClassLoader>
| Modifier and Type | Class and Description | 
|---|---|
| protected static class  | ClassLoadingStrategy.Default.InjectionDispatcher
 A class loading strategy which applies a class loader injection while applying a given  ProtectionDomainon class injection. | 
| protected static class  | ClassLoadingStrategy.Default.WrappingDispatcherA class loading strategy which creates a wrapping class loader while applying a given
  ProtectionDomainon class loading. | 
ClassLoadingStrategy.Configurable<S extends ClassLoader>, ClassLoadingStrategy.Default, ClassLoadingStrategy.ForBootstrapInjection, ClassLoadingStrategy.ForJnaInjection, ClassLoadingStrategy.ForUnsafeInjection, ClassLoadingStrategy.UsingLookup| Enum Constant and Description | 
|---|
| CHILD_FIRST
 The child-first class loading strategy is a modified version of the
  WRAPPERwhere the dynamic types are given
 priority over any types of a parent class loader with the same name. | 
| CHILD_FIRST_PERSISTENTThe strategy is identical to  CHILD_FIRSTbut
 exposes the byte arrays that represent a class byClassLoader.getResourceAsStream(String). | 
| INJECTION
 This strategy does not create a new class loader but injects all classes into the given  ClassLoaderby reflective access. | 
| WRAPPERThis strategy creates a new  ByteArrayClassLoaderwith the given
 class loader as its parent. | 
| WRAPPER_PERSISTENTThe strategy is identical to  WRAPPERbut exposes
 the byte arrays that represent a class byClassLoader.getResourceAsStream(String). | 
BOOTSTRAP_LOADER, NO_PROTECTION_DOMAIN| Modifier and Type | Method and Description | 
|---|---|
| ClassLoadingStrategy.Configurable<ClassLoader> | allowExistingTypes()Determines if this class loading strategy should not throw an exception when attempting to load a class that
 was already loaded. | 
| Map<TypeDescription,Class<?>> | load(ClassLoader classLoader,
    Map<TypeDescription,byte[]> types)Loads a given collection of classes given their binary representation. | 
| ClassLoadingStrategy.Configurable<ClassLoader> | opened()With an opened class loading strategy, it is assured that types can be added to the class loader, either by
 indirect injection using this strategy or by creating a class loader that explicitly supports injection. | 
| static ClassLoadingStrategy.Default | valueOf(String name)Returns the enum constant of this type with the specified name. | 
| static ClassLoadingStrategy.Default[] | values()Returns an array containing the constants of this enum type, in
the order they are declared. | 
| ClassLoadingStrategy.Configurable<ClassLoader> | with(PackageDefinitionStrategy packageDefinitionStrategy)Defines the supplied package definition strategy to be used for defining packages. | 
| ClassLoadingStrategy.Configurable<ClassLoader> | with(ProtectionDomain protectionDomain)Overrides the implicitly set default  ProtectionDomainwith an explicit one. | 
public static final ClassLoadingStrategy.Default WRAPPER
ByteArrayClassLoader with the given
 class loader as its parent. The byte array class loader is aware of a any dynamically created type and can
 natively load the given classes. This allows to load classes with cyclic load-time dependencies since the
 byte array class loader is queried on each encountered unknown class. Due to the encapsulation of the
 classes that were loaded by a byte array class loader, this strategy will lead to the unloading of these
 classes once this class loader, its classes or any instances of these classes become unreachable.public static final ClassLoadingStrategy.Default WRAPPER_PERSISTENT
WRAPPER but exposes
 the byte arrays that represent a class by ClassLoader.getResourceAsStream(String). For
 this purpose, all class files are persisted as byte arrays withing the wrapping class loader.public static final ClassLoadingStrategy.Default CHILD_FIRST
 The child-first class loading strategy is a modified version of the
 WRAPPER where the dynamic types are given
 priority over any types of a parent class loader with the same name.
 
Important: This does not replace a type of the same name, but it makes the type invisible by the reach of this class loader.
public static final ClassLoadingStrategy.Default CHILD_FIRST_PERSISTENT
CHILD_FIRST but
 exposes the byte arrays that represent a class by ClassLoader.getResourceAsStream(String).
 For this purpose, all class files are persisted as byte arrays withing the wrapping class loader.public static final ClassLoadingStrategy.Default INJECTION
 This strategy does not create a new class loader but injects all classes into the given ClassLoader
 by reflective access. This prevents the loading of classes with cyclic load-time dependencies but avoids the
 creation of an additional class loader. The advantage of this strategy is that the loaded classes will have
 package-private access to other classes within their package of the class loader into which they are
 injected what is not permitted when the wrapper class loader is used. This strategy is implemented using a
 ClassInjector.UsingReflection. Note that this strategy usually yields
 a better runtime performance.
 
Important: Class injection requires access to JVM internal methods that are sealed by security managers and the Java Platform module system. Since Java 11, access to these methods is no longer feasible unless those packages are explicitly opened.
 Note: This class loader does not define packages for injected classes by default. Therefore, calls to
 Class.getPackage() might return null. Packages are only defined manually by a class loader prior to
 Java 9.
 
public static ClassLoadingStrategy.Default[] values()
for (ClassLoadingStrategy.Default c : ClassLoadingStrategy.Default.values()) System.out.println(c);
public static ClassLoadingStrategy.Default valueOf(String name)
name - the name of the enum constant to be returned.IllegalArgumentException - if this enum type has no constant with the specified nameNullPointerException - if the argument is nullpublic Map<TypeDescription,Class<?>> load(@MaybeNull ClassLoader classLoader, Map<TypeDescription,byte[]> types)
load in interface ClassLoadingStrategy<ClassLoader>classLoader - The class loader to used for loading the classes.types - Byte array representations of the types to be loaded mapped by their descriptions,
                    where an iteration order defines an order in which they are supposed to be loaded,
                    if relevant.public ClassLoadingStrategy.Configurable<ClassLoader> with(ProtectionDomain protectionDomain)
ProtectionDomain with an explicit one.with in interface ClassLoadingStrategy.Configurable<ClassLoader>protectionDomain - The protection domain to apply or null if no protection domain is set.ProtectionDomain.public ClassLoadingStrategy.Configurable<ClassLoader> with(PackageDefinitionStrategy packageDefinitionStrategy)
with in interface ClassLoadingStrategy.Configurable<ClassLoader>packageDefinitionStrategy - The package definer to be used.public ClassLoadingStrategy.Configurable<ClassLoader> allowExistingTypes()
allowExistingTypes in interface ClassLoadingStrategy.Configurable<ClassLoader>public ClassLoadingStrategy.Configurable<ClassLoader> opened()
opened in interface ClassLoadingStrategy.Configurable<ClassLoader>Copyright © 2014–2023. All rights reserved.