Package org.codehaus.groovy.vmplugin.v16

# Class Java16

java.lang.Object
org.codehaus.groovy.vmplugin.v8.Java8
org.codehaus.groovy.vmplugin.v9.Java9
org.codehaus.groovy.vmplugin.v10.Java10
org.codehaus.groovy.vmplugin.v16.Java16

All Implemented Interfaces:
  `VMPlugin`

public class Java16 extends Java10

- ## Field Summary

  ### Fields inherited from class org.codehaus.groovy.vmplugin.v8.Java8

  `elementTypeToTarget`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Java16()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `getInvokeSpecialHandle(Method method, Object receiver)`
  Returns a handle with bound receiver to invokeSpecial the given method.
  `List<String>`
  `getRecordComponentNames(Class<?> maybeRecord)`
  Returns the list of record component names or the empty list if the class is not a record or running on a pre16 JDK.
  `int`
  `getVersion()`
  Gives the version the plugin is made for
  `Object`
  `invokeHandle(Object handle, Object[] args)`
  Invokes a handle produced by #getInvokeSpecialdHandle
  `protected void`
  `makeRecordComponents(CompileUnit cu, ClassNode cn, Class<?> c)`

  ### Methods inherited from class org.codehaus.groovy.vmplugin.v10.Java10

  `getPluginDefaultGroovyMethods`

  ### Methods inherited from class org.codehaus.groovy.vmplugin.v9.Java9

  `checkAccessible, checkCanSetAccessible, getDefaultImportClasses, getLookupConstructor, getPrivateLookup, newLookup, transformMetaMethod, trySetAccessible`

  ### Methods inherited from class org.codehaus.groovy.vmplugin.v8.Java8

  `configureAnnotation, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, doPrivileged, doPrivileged, fillParameterNames, getPluginStaticGroovyMethods, getValue, invalidateCallSites, makeClassNode, of, setAdditionalClassInformation, toAnnotationNode, transformMetaMethod`

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

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

- ## Constructor Details

  - ### Java16

    public Java16()

- ## Method Details

  - ### 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 `Java10`
    Returns:
      7 for jdk7, 8 for jdk8, 9 for jdk9 or higher

  - ### 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 `Java8`
    Returns:
      null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call

  - ### invokeHandle

    public Object invokeHandle(Object handle, Object[] args) throws Throwable
    Description copied from interface: `VMPlugin`
    Invokes a handle produced by #getInvokeSpecialdHandle
    Specified by:
      `invokeHandle` in interface `VMPlugin`
    Overrides:
      `invokeHandle` in class `Java8`
    Parameters:
      `handle` - the handle
      `args` - arguments for the method call, can be empty but not null
    Returns:
      the result of the method call
    Throws:
      `Throwable`

  - ### makeRecordComponents

    protected void makeRecordComponents(CompileUnit cu, ClassNode cn, Class<?> c)
    Overrides:
      `makeRecordComponents` in class `Java8`

  - ### getRecordComponentNames

    @Incubating public List<String> getRecordComponentNames(Class<?> maybeRecord)
    Description copied from interface: `VMPlugin`
    Returns the list of record component names or the empty list if the class is not a record or running on a pre16 JDK.
    Parameters:
      `maybeRecord` - the class in question
    Returns:
      the default list of names