Class ClassInjector.UsingLookup.Dispatcher.ForJava9CapableVm

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.reflect.Method defineClass
      The java.lang.invoke.MethodHandles$Lookup#defineClass method.
      private java.lang.reflect.Method lookupClass
      The java.lang.invoke.MethodHandles$Lookup#lookupClass method.
      private java.lang.reflect.Method lookupModes
      The java.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
      The java.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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
        The java.lang.invoke.MethodHandles$#privateLookupIn method.
      • lookupClass

        private final java.lang.reflect.Method lookupClass
        The java.lang.invoke.MethodHandles$Lookup#lookupClass method.
      • lookupModes

        private final java.lang.reflect.Method lookupModes
        The java.lang.invoke.MethodHandles$Lookup#lookupModes method.
      • defineClass

        private final java.lang.reflect.Method defineClass
        The java.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 - The java.lang.invoke.MethodHandles$#privateLookupIn method.
        lookupClass - The java.lang.invoke.MethodHandles$Lookup#lookupClass method.
        lookupModes - The java.lang.invoke.MethodHandles$Lookup#lookupModes method.
        defineClass - The java.lang.invoke.MethodHandles$Lookup#defineClass method.
    • Method Detail

      • lookupType

        public java.lang.Class<?> lookupType​(java.lang.Object lookup)
        Returns the lookup type for a given method handle lookup.
        Specified by:
        lookupType in interface ClassInjector.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 interface ClassInjector.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 interface ClassInjector.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 interface ClassInjector.UsingLookup.Dispatcher
        Parameters:
        lookup - The java.lang.invoke.MethodHandles$Lookup instance to use.
        binaryRepresentation - The defined class's binary representation.
        Returns:
        The defined class.