org.codehaus.groovy.vmplugin.v8

## Class Java8

- java.lang.Object
- - org.codehaus.groovy.vmplugin.v5.Java5
  - - org.codehaus.groovy.vmplugin.v6.Java6
    - - org.codehaus.groovy.vmplugin.v7.Java7
      - - org.codehaus.groovy.vmplugin.v8.Java8

- All Implemented Interfaces:
    VMPlugin
  Direct Known Subclasses:
    Java9

      public class Java8
      extends Java7

  Java 8 based functions.
  Since:
    2.5.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Java8()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `getElementCode(ElementType value)`
    `Object` | `getInvokeSpecialHandle(Method method, Object receiver)` Returns a handle with bound receiver to invokeSpecial the given method.
    `Class<?>[]` | `getPluginDefaultGroovyMethods()`
    `int` | `getVersion()` Gives the version the plugin is made for
    `static MethodHandles.Lookup` | `of(Class<?> declaringClass)`
    `protected Parameter[]` | `processParameters(CompileUnit compileUnit, Method m)`

    - ### Methods inherited from class org.codehaus.groovy.vmplugin.v7.Java7

      `invalidateCallSites, invokeHandle`

    - ### Methods inherited from class org.codehaus.groovy.vmplugin.v5.Java5

      `configureAnnotation, configureAnnotationFromDefinition, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, getPluginStaticGroovyMethods, makeParameter, setAdditionalClassInformation`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Java8

          public Java8()

  - ### Method Detail

    - #### getPluginDefaultGroovyMethods

          public Class<?>[] getPluginDefaultGroovyMethods()

      Specified by:
        `getPluginDefaultGroovyMethods` in interface `VMPlugin`
      Overrides:
        `getPluginDefaultGroovyMethods` in class `Java5`

    - #### getVersion

          public int getVersion()

      Description copied from interface: `VMPlugin`
      Gives the version the plugin is made for
      Specified by:
        `getVersion` in interface `VMPlugin`
      Overrides:
        `getVersion` in class `Java7`
      Returns:
        7 for jdk7, 8 for jdk8, 9 for jdk9 or higher

    - #### getElementCode

          protected int getElementCode(ElementType value)

      Overrides:
        `getElementCode` in class `Java5`

    - #### processParameters

          protected Parameter[] processParameters(CompileUnit compileUnit,
                                                  Method m)

      Overrides:
        `processParameters` in class `Java5`

    - #### of

          public static MethodHandles.Lookup of(Class<?> declaringClass)

    - #### getInvokeSpecialHandle

          public Object getInvokeSpecialHandle(Method method,
                                               Object receiver)

      Description copied from interface: `VMPlugin`
      Returns a handle with bound receiver to invokeSpecial the given method. This method will require at least Java 7, but since the source has to compile on older Java versions as well it is not marked to return a MethodHandle and uses Object instead
      Specified by:
        `getInvokeSpecialHandle` in interface `VMPlugin`
      Overrides:
        `getInvokeSpecialHandle` in class `Java7`
      Returns:
        null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call