Package net.bytebuddy.dynamic.loading
Class ClassInjector.UsingLookup.Dispatcher.ForJava9CapableVm
- java.lang.Object
-
- net.bytebuddy.dynamic.loading.ClassInjector.UsingLookup.Dispatcher.ForJava9CapableVm
-
- All Implemented Interfaces:
ClassInjector.UsingLookup.Dispatcher
- Enclosing interface:
- ClassInjector.UsingLookup.Dispatcher
@Enhance public static class ClassInjector.UsingLookup.Dispatcher.ForJava9CapableVm extends java.lang.Object implements ClassInjector.UsingLookup.Dispatcher
A dispatcher for a Java 9 capable VM that supports class definition via method handles.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.loading.ClassInjector.UsingLookup.Dispatcher
ClassInjector.UsingLookup.Dispatcher.Creator, ClassInjector.UsingLookup.Dispatcher.ForJava9CapableVm, ClassInjector.UsingLookup.Dispatcher.ForLegacyVm
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Method
defineClass
Thejava.lang.invoke.MethodHandles$Lookup#defineClass
method.private java.lang.reflect.Method
lookupClass
Thejava.lang.invoke.MethodHandles$Lookup#lookupClass
method.private java.lang.reflect.Method
lookupModes
Thejava.lang.invoke.MethodHandles$Lookup#lookupModes
method.private static java.lang.Object[]
NO_ARGUMENTS
An empty array that can be used to indicate no arguments to avoid an allocation on a reflective call.private java.lang.reflect.Method
privateLookupIn
Thejava.lang.invoke.MethodHandles$#privateLookupIn
method.
-
Constructor Summary
Constructors Modifier Constructor Description protected
ForJava9CapableVm(java.lang.reflect.Method privateLookupIn, java.lang.reflect.Method lookupClass, java.lang.reflect.Method lookupModes, java.lang.reflect.Method defineClass)
Creates a new dispatcher for a Java 9 capable VM.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class<?>
defineClass(java.lang.Object lookup, byte[] binaryRepresentation)
Defines a class.boolean
isAlive()
Indicates if this dispatcher is available on the current VM.int
lookupModes(java.lang.Object lookup)
Returns a lookup objects lookup types.java.lang.Class<?>
lookupType(java.lang.Object lookup)
Returns the lookup type for a given method handle lookup.java.lang.Object
resolve(java.lang.Object lookup, java.lang.Class<?> type)
Resolves the supplied lookup instance's access scope for the supplied type.
-
-
-
Field Detail
-
NO_ARGUMENTS
private static final java.lang.Object[] NO_ARGUMENTS
An empty array that can be used to indicate no arguments to avoid an allocation on a reflective call.
-
privateLookupIn
private final java.lang.reflect.Method privateLookupIn
Thejava.lang.invoke.MethodHandles$#privateLookupIn
method.
-
lookupClass
private final java.lang.reflect.Method lookupClass
Thejava.lang.invoke.MethodHandles$Lookup#lookupClass
method.
-
lookupModes
private final java.lang.reflect.Method lookupModes
Thejava.lang.invoke.MethodHandles$Lookup#lookupModes
method.
-
defineClass
private final java.lang.reflect.Method defineClass
Thejava.lang.invoke.MethodHandles$Lookup#defineClass
method.
-
-
Constructor Detail
-
ForJava9CapableVm
protected ForJava9CapableVm(java.lang.reflect.Method privateLookupIn, java.lang.reflect.Method lookupClass, java.lang.reflect.Method lookupModes, java.lang.reflect.Method defineClass)
Creates a new dispatcher for a Java 9 capable VM.- Parameters:
privateLookupIn
- Thejava.lang.invoke.MethodHandles$#privateLookupIn
method.lookupClass
- Thejava.lang.invoke.MethodHandles$Lookup#lookupClass
method.lookupModes
- Thejava.lang.invoke.MethodHandles$Lookup#lookupModes
method.defineClass
- Thejava.lang.invoke.MethodHandles$Lookup#defineClass
method.
-
-
Method Detail
-
isAlive
public boolean isAlive()
Indicates if this dispatcher is available on the current VM.- Specified by:
isAlive
in interfaceClassInjector.UsingLookup.Dispatcher
- Returns:
true
if this dispatcher is alive.
-
lookupType
public java.lang.Class<?> lookupType(java.lang.Object lookup)
Returns the lookup type for a given method handle lookup.- Specified by:
lookupType
in interfaceClassInjector.UsingLookup.Dispatcher
- Parameters:
lookup
- The lookup instance.- Returns:
- The lookup type.
-
lookupModes
public int lookupModes(java.lang.Object lookup)
Returns a lookup objects lookup types.- Specified by:
lookupModes
in interfaceClassInjector.UsingLookup.Dispatcher
- Parameters:
lookup
- The lookup instance.- Returns:
- The modifiers indicating the instance's lookup modes.
-
resolve
public java.lang.Object resolve(java.lang.Object lookup, java.lang.Class<?> type)
Resolves the supplied lookup instance's access scope for the supplied type.- Specified by:
resolve
in interfaceClassInjector.UsingLookup.Dispatcher
- Parameters:
lookup
- The lookup to use.type
- The type to resolve the scope for.- Returns:
- An appropriate lookup instance.
-
defineClass
public java.lang.Class<?> defineClass(java.lang.Object lookup, byte[] binaryRepresentation)
Defines a class.- Specified by:
defineClass
in interfaceClassInjector.UsingLookup.Dispatcher
- Parameters:
lookup
- Thejava.lang.invoke.MethodHandles$Lookup
instance to use.binaryRepresentation
- The defined class's binary representation.- Returns:
- The defined class.
-
-