org.codehaus.groovy.vmplugin.v7

## Class Java7

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

- All Implemented Interfaces:
    VMPlugin
  Direct Known Subclasses:
    Java8

      public class Java7
      extends Java6

  Java 7 based functions. Currently just a stub but you can add your own methods to your own version and place it on the classpath ahead of this one.
  Author:
    Jochen Theodorou

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Java7()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `getInvokeSpecialHandle(java.lang.reflect.Method method, java.lang.Object receiver)` Returns a handle with bound receiver to invokeSpecial the given method.
    `int` | `getVersion()` Gives the version the plguin is made for
    `void` | `invalidateCallSites()`
    `java.lang.Object` | `invokeHandle(java.lang.Object handle, java.lang.Object[] args)` Invokes a handle produced by #getInvokeSpecialdHandle

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

      `configureAnnotation, configureClassNode, getPluginDefaultGroovyMethods, getPluginStaticGroovyMethods, setAdditionalClassInformation`

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

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

- - ### Constructor Detail

    - #### Java7

          public Java7()

  - ### Method Detail

    - #### invalidateCallSites

          public void invalidateCallSites()

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

    - #### getVersion

          public int getVersion()

      Description copied from interface: `VMPlugin`
      Gives the version the plguin is made for
      Specified by:
        `getVersion` in interface `VMPlugin`
      Overrides:
        `getVersion` in class `Java6`
      Returns:
        5 for jdk5, 6 for jdk6, 7 for jdk7 or higher

    - #### getInvokeSpecialHandle

          public java.lang.Object getInvokeSpecialHandle(java.lang.reflect.Method method,
                                                         java.lang.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 `Java5`
      Returns:
        null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call

    - #### invokeHandle

          public java.lang.Object invokeHandle(java.lang.Object handle,
                                               java.lang.Object[] args)
                                        throws java.lang.Throwable

      Description copied from interface: `VMPlugin`
      Invokes a handle produced by #getInvokeSpecialdHandle
      Specified by:
        `invokeHandle` in interface `VMPlugin`
      Overrides:
        `invokeHandle` in class `Java5`
      Parameters:
        `handle` - the handle
        `args` - arguments for the method call, can be empty but not null
      Returns:
        the result of the method call
      Throws:
        `java.lang.Throwable`