Package net.bytebuddy.dynamic.loading
Interface ClassInjector.UsingReflection.Dispatcher
- All Known Implementing Classes:
ClassInjector.UsingReflection.Dispatcher.Direct
,ClassInjector.UsingReflection.Dispatcher.Direct.ForJava7CapableVm
,ClassInjector.UsingReflection.Dispatcher.Direct.ForLegacyVm
,ClassInjector.UsingReflection.Dispatcher.Initializable.Unavailable
,ClassInjector.UsingReflection.Dispatcher.Unavailable
,ClassInjector.UsingReflection.Dispatcher.UsingUnsafeInjection
,ClassInjector.UsingReflection.Dispatcher.UsingUnsafeOverride
,ClassInjector.UsingReflection.Dispatcher.UsingUnsafeOverride.ForJava7CapableVm
,ClassInjector.UsingReflection.Dispatcher.UsingUnsafeOverride.ForLegacyVm
- Enclosing class:
- ClassInjector.UsingReflection
protected static interface ClassInjector.UsingReflection.Dispatcher
A dispatcher for accessing a
ClassLoader
reflectively.-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enum
A creation action for a dispatcher.static class
A class injection dispatcher that is using reflection on theClassLoader
methods.static interface
Initializes a dispatcher to make non-accessible APIs accessible.static class
Represents an unsuccessfully loaded method lookup.static class
An indirect dispatcher that uses a redirection accessor class that was injected into the bootstrap class loader.static class
A dispatcher implementation that usessun.misc.Unsafe#putBoolean
to set theAccessibleObject
field for making methods accessible. -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionClass<?>
defineClass
(ClassLoader classLoader, String name, byte[] binaryRepresentation, ProtectionDomain protectionDomain) Defines a class for the given class loader.definePackage
(ClassLoader classLoader, String name, String specificationTitle, String specificationVersion, String specificationVendor, String implementationTitle, String implementationVersion, String implementationVendor, URL sealBase) Defines a package for the given class loader.Class<?>
findClass
(ClassLoader classLoader, String name) Looks up a class from the given class loader.getClassLoadingLock
(ClassLoader classLoader, String name) Returns the lock for loading the specified class.getDefinedPackage
(ClassLoader classLoader, String name) Looks up a package from a class loader.getPackage
(ClassLoader classLoader, String name) Looks up a package from a class loader or its ancestor.
-
Field Details
-
UNDEFINED
Indicates a class that is currently not defined.
-
-
Method Details
-
getClassLoadingLock
Returns the lock for loading the specified class.- Parameters:
classLoader
- the class loader to inject the class into.name
- The name of the class.- Returns:
- The lock for loading this class.
-
findClass
Looks up a class from the given class loader.- Parameters:
classLoader
- The class loader for which a class should be located.name
- The binary name of the class that should be located.- Returns:
- The class for the binary name or
null
if no such class is defined for the provided class loader.
-
defineClass
Class<?> defineClass(ClassLoader classLoader, String name, byte[] binaryRepresentation, @MaybeNull ProtectionDomain protectionDomain) Defines a class for the given class loader.- Parameters:
classLoader
- The class loader for which a new class should be defined.name
- The binary name of the class that should be defined.binaryRepresentation
- The binary representation of the class.protectionDomain
- The protection domain for the defined class.- Returns:
- The defined, loaded class.
-
getDefinedPackage
Looks up a package from a class loader. If the operation is not supported, falls back togetPackage(ClassLoader, String)
- Parameters:
classLoader
- The class loader to query.name
- The binary name of the package.- Returns:
- The package for the given name as defined by the provided class loader or
null
if no such package exists.
-
getPackage
Looks up a package from a class loader or its ancestor.- Parameters:
classLoader
- The class loader to query.name
- The binary name of the package.- Returns:
- The package for the given name as defined by the provided class loader or its ancestor, or
null
if no such package exists.
-
definePackage
Package definePackage(ClassLoader classLoader, String name, @MaybeNull String specificationTitle, @MaybeNull String specificationVersion, @MaybeNull String specificationVendor, @MaybeNull String implementationTitle, @MaybeNull String implementationVersion, @MaybeNull String implementationVendor, @MaybeNull URL sealBase) Defines a package for the given class loader.- Parameters:
classLoader
- The class loader for which a package is to be defined.name
- The binary name of the package.specificationTitle
- The specification title of the package ornull
if no specification title exists.specificationVersion
- The specification version of the package ornull
if no specification version exists.specificationVendor
- The specification vendor of the package ornull
if no specification vendor exists.implementationTitle
- The implementation title of the package ornull
if no implementation title exists.implementationVersion
- The implementation version of the package ornull
if no implementation version exists.implementationVendor
- The implementation vendor of the package ornull
if no implementation vendor exists.sealBase
- The seal base URL ornull
if the package should not be sealed.- Returns:
- The defined package.
-