Package net.bytebuddy.dynamic.loading
Class ClassInjector.UsingLookup
java.lang.Object
net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
net.bytebuddy.dynamic.loading.ClassInjector.UsingLookup
- All Implemented Interfaces:
ClassInjector
- Enclosing interface:
ClassInjector
A class injector that uses a java.lang.invoke.MethodHandles$Lookup
object for defining a class.
Important: This functionality is only available starting from Java 9.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static interface
A dispatcher forjava.lang.invoke.MethodHandles
.Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.loading.ClassInjector
ClassInjector.AbstractBase, ClassInjector.UsingInstrumentation, ClassInjector.UsingJna, ClassInjector.UsingLookup, ClassInjector.UsingReflection, ClassInjector.UsingUnsafe
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Object
Thejava.lang.invoke.MethodHandles$Lookup
to use.private static final ClassInjector.UsingLookup.MethodHandles
The dispatcher to interacting with instances ofjava.lang.invoke.MethodHandles
.private static final ClassInjector.UsingLookup.MethodHandles.Lookup
The dispatcher to interacting withjava.lang.invoke.MethodHandles$Lookup
.private static final int
Indicates a lookup instance's package lookup mode.Fields inherited from interface net.bytebuddy.dynamic.loading.ClassInjector
ALLOW_EXISTING_TYPES, SUPPRESS_ACCESS_CHECKS
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
UsingLookup
(Object lookup) Creates a new class injector using a lookup instance. -
Method Summary
Modifier and TypeMethodDescriptionprivate static <T> T
doPrivileged
(PrivilegedAction<T> action) A proxy forjava.security.AccessController#doPrivileged
that is activated if available.Resolves this injector to use the supplied type's scope.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
Checks if the current VM is capable of defining classes using a method handle lookup.Class
<?> Returns the lookup type this injector is based upon.static ClassInjector.UsingLookup
Creates class injector that defines a class using a method handle lookup.Methods inherited from class net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase
inject
-
Field Details
-
METHOD_HANDLES
The dispatcher to interacting with instances ofjava.lang.invoke.MethodHandles
. -
METHOD_HANDLES_LOOKUP
The dispatcher to interacting withjava.lang.invoke.MethodHandles$Lookup
. -
PACKAGE_LOOKUP
private static final int PACKAGE_LOOKUPIndicates a lookup instance's package lookup mode.- See Also:
-
lookup
Thejava.lang.invoke.MethodHandles$Lookup
to use.
-
-
Constructor Details
-
UsingLookup
Creates a new class injector using a lookup instance.- Parameters:
lookup
- Thejava.lang.invoke.MethodHandles$Lookup
instance to use.
-
-
Method Details
-
doPrivileged
A proxy forjava.security.AccessController#doPrivileged
that is activated if available.- Type Parameters:
T
- The type of the action's resolved value.- Parameters:
action
- The action to execute from a privileged context.- Returns:
- The action's resolved value.
-
of
Creates class injector that defines a class using a method handle lookup.- Parameters:
lookup
- Thejava.lang.invoke.MethodHandles$Lookup
instance to use.- Returns:
- An appropriate class injector.
-
lookupType
Returns the lookup type this injector is based upon.- Returns:
- The lookup type.
-
in
Resolves this injector to use the supplied type's scope.- Parameters:
type
- The type to resolve the access scope for.- Returns:
- An new injector with the specified scope.
-
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
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()Checks if the current VM is capable of defining classes using a method handle lookup.- Returns:
true
if the current VM is capable of defining classes using a lookup.
-