Class MultipleParentClassLoader.Builder
- java.lang.Object
-
- net.bytebuddy.dynamic.loading.MultipleParentClassLoader.Builder
-
- Enclosing class:
- MultipleParentClassLoader
public static class MultipleParentClassLoader.Builder extends java.lang.Object
A builder to collect class loader and that creates aMultipleParentClassLoader
only if multiple or noClassLoader
s are found in the process. If exactly a single class loader is found, this class loader is returned. All class loaders are applied in their collection order with the exception of the bootstrap class loader which is represented bynull
and which is an implicit parent of any class loader.
-
-
Constructor Summary
Constructors Constructor Description Builder()
Creates a new builder without any class loaders.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MultipleParentClassLoader.Builder
append(java.lang.Class<?>... type)
Appends the class loaders of the given types.MultipleParentClassLoader.Builder
append(java.lang.ClassLoader... classLoader)
Appends the given class loaders if they were not yet collected.MultipleParentClassLoader.Builder
append(java.util.Collection<? extends java.lang.Class<?>> types)
Appends the class loaders of the given types if those class loaders were not yet collected.MultipleParentClassLoader.Builder
append(java.util.List<? extends java.lang.ClassLoader> classLoaders)
Appends the given class loaders if they were not yet appended.java.lang.ClassLoader
build()
Returns the only class loader that was appended if exactly one class loader was appended or a multiple parent class loader as a parent of all supplied class loader and with the bootstrap class loader as an implicit parent.java.lang.ClassLoader
build(java.lang.ClassLoader parent)
Returns the only class loader that was appended if exactly one class loader was appended or a multiple parent class loader as a parent of all supplied class loader and with the bootstrap class loader as an implicit parent.MultipleParentClassLoader.Builder
filter(ElementMatcher<? super java.lang.ClassLoader> matcher)
Only retains all class loaders that match the given matcher.
-
-
-
Method Detail
-
append
public MultipleParentClassLoader.Builder append(java.lang.Class<?>... type)
Appends the class loaders of the given types. The bootstrap class loader is implicitly skipped as it is an implicit parent of any class loader.- Parameters:
type
- The types of which to collect the class loaders.- Returns:
- A new builder instance with the additional class loaders of the provided types if they were not yet collected.
-
append
public MultipleParentClassLoader.Builder append(java.util.Collection<? extends java.lang.Class<?>> types)
Appends the class loaders of the given types if those class loaders were not yet collected. The bootstrap class loader is implicitly skipped as it is an implicit parent of any class loader.- Parameters:
types
- The types of which to collect the class loaders.- Returns:
- A new builder instance with the additional class loaders.
-
append
public MultipleParentClassLoader.Builder append(java.lang.ClassLoader... classLoader)
Appends the given class loaders if they were not yet collected. The bootstrap class loader is implicitly skipped as it is an implicit parent of any class loader.- Parameters:
classLoader
- The class loaders to be collected.- Returns:
- A new builder instance with the additional class loaders.
-
append
public MultipleParentClassLoader.Builder append(java.util.List<? extends java.lang.ClassLoader> classLoaders)
Appends the given class loaders if they were not yet appended. The bootstrap class loader is never appended as it is an implicit parent of any class loader.- Parameters:
classLoaders
- The class loaders to collected.- Returns:
- A new builder instance with the additional class loaders.
-
filter
public MultipleParentClassLoader.Builder filter(ElementMatcher<? super java.lang.ClassLoader> matcher)
Only retains all class loaders that match the given matcher.- Parameters:
matcher
- The matcher to be used for filtering.- Returns:
- A builder that does not longer consider any appended class loaders that matched the provided matcher.
-
build
public java.lang.ClassLoader build()
Returns the only class loader that was appended if exactly one class loader was appended or a multiple parent class loader as a parent of all supplied class loader and with the bootstrap class loader as an implicit parent. If no class loader was appended, a new class loader is created that declares no parents. If a class loader is created, its explicit parent is set to be the bootstrap class loader.
Important: Byte Buddy does not provide any access control for the creation of the class loader. It is the responsibility of the user of this builder to provide such privileges.
- Returns:
- A suitable class loader.
-
build
public java.lang.ClassLoader build(java.lang.ClassLoader parent)
Returns the only class loader that was appended if exactly one class loader was appended or a multiple parent class loader as a parent of all supplied class loader and with the bootstrap class loader as an implicit parent. If no class loader was appended, or if only the supplied parent to this method was included, this class loader is returned,
Important: Byte Buddy does not provide any access control for the creation of the class loader. It is the responsibility of the user of this builder to provide such privileges.
- Parameters:
parent
- The class loader's contractual parent which is accessible viaClassLoader.getParent()
. If this class loader is also included in the appended class loaders, it is not- Returns:
- A suitable class loader.
-
-