Package org.codehaus.groovy.vmplugin.v9

# Class Java9

java.lang.Object
org.codehaus.groovy.vmplugin.v8.Java8
org.codehaus.groovy.vmplugin.v9.Java9

All Implemented Interfaces:
  `VMPlugin`

Direct Known Subclasses:
  `Java10`

@Deprecated(since="6.0.0", forRemoval=true) public class Java9 extends Java8
Deprecated, for removal: This API element is subject to removal in a future version.
Use `Java17` instead. Groovy 6.0 requires JDK 17+.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Java9()`
  Deprecated, for removal: This API element is subject to removal in a future version.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `checkAccessible(Class<?> accessingClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  check whether the member can be accessed or not
  `boolean`
  `checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully if `Java8.checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)` returns true and any of the following hold:
  `Map<String,Set<String>>`
  `getDefaultImportClasses(String[] packageNames)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the default import classes: class name -> the relevant package names
  `Class<?>[]`
  `getPluginDefaultGroovyMethods()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns plugin-specific default Groovy methods.
  `int`
  `getVersion()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Gives the version the plugin is made for
  `protected MethodHandles.Lookup`
  `newLookup(Class<?> targetClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Creates a lookup capable of accessing members declared by the target class.
  `MetaMethod`
  `transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  transform meta method
  `boolean`
  `trySetAccessible(AccessibleObject ao)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Set the `accessible` flag for this reflected object to `true` if possible.

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

  `applyTypeAnnotations, configureAnnotation, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, fillParameterNames, getInvokeSpecialHandle, getPluginStaticGroovyMethods, getValue, invalidateCallSites, invokeHandle, makeClassNode, makeRecordComponents, of, setAdditionalClassInformation, toAnnotationNode, transformMetaMethod`

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

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

  ### Methods inherited from interface org.codehaus.groovy.vmplugin.VMPlugin

  `configureAnnotationNodeFromDefinition, getRecordComponentNames`

- ## Constructor Details

  - ### Java9

    public Java9()
    Deprecated, for removal: This API element is subject to removal in a future version.

- ## Method Details

  - ### getVersion

    public int getVersion()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Gives the version the plugin is made for
    Specified by:
      `getVersion` in interface `VMPlugin`
    Overrides:
      `getVersion` in class `Java8`
    Returns:
      7 for jdk7, 8 for jdk8, 9 for jdk9 or higher

  - ### getPluginDefaultGroovyMethods

    public Class<?>[] getPluginDefaultGroovyMethods()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns plugin-specific default Groovy methods.
    Specified by:
      `getPluginDefaultGroovyMethods` in interface `VMPlugin`
    Overrides:
      `getPluginDefaultGroovyMethods` in class `Java8`
    Returns:
      the default Groovy method classes contributed by this plugin

  - ### getDefaultImportClasses

    public Map<String,Set<String>> getDefaultImportClasses(String[] packageNames)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the default import classes: class name -> the relevant package names
    Parameters:
      `packageNames` - the default import package names, e.g. java.lang.
    Returns:
      the default import classes

  - ### newLookup

    protected MethodHandles.Lookup newLookup(Class<?> targetClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a lookup capable of accessing members declared by the target class.
    Overrides:
      `newLookup` in class `Java8`
    Parameters:
      `targetClass` - the lookup target
    Returns:
      a lookup for the target class

  - ### transformMetaMethod

    public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)
    Deprecated, for removal: This API element is subject to removal in a future version.
    transform meta method
    Specified by:
      `transformMetaMethod` in interface `VMPlugin`
    Overrides:
      `transformMetaMethod` in class `Java8`
    Parameters:
      `metaClass` - metaclass
      `metaMethod` - the original meta method
      `caller` - caller class, whose method sets accessible for methods
    Returns:
      the transformed meta method

  - ### trySetAccessible

    public boolean trySetAccessible(AccessibleObject ao)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Set the `accessible` flag for this reflected object to `true` if possible.
    Specified by:
      `trySetAccessible` in interface `VMPlugin`
    Overrides:
      `trySetAccessible` in class `Java8`
    Parameters:
      `ao` - the accessible object
    Returns:
      `true` if the `accessible` flag is set to `true`; `false` if access cannot be enabled.

  - ### checkCanSetAccessible

    public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully if `Java8.checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)` returns true and any of the following hold:

    1) C and D are in the same module. 2) The member is public and D is public in a package that the module containing D exports to at least the module containing C. 3) The member is protected static, D is public in a package that the module containing D exports to at least the module containing C, and C is a subclass of D. 4) D is in a package that the module containing D opens to at least the module containing C. All packages in unnamed and open modules are open to all modules and so this method always succeeds when D is in an unnamed or open module.

    Specified by:
      `checkCanSetAccessible` in interface `VMPlugin`
    Overrides:
      `checkCanSetAccessible` in class `Java8`
    Parameters:
      `accessibleObject` - the accessible object to check
      `callerClass` - the class wishing to invoke `setAccessible`
    Returns:
      the check result

  - ### checkAccessible

    public boolean checkAccessible(Class<?> accessingClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)
    Deprecated, for removal: This API element is subject to removal in a future version.
    check whether the member can be accessed or not
    Specified by:
      `checkAccessible` in interface `VMPlugin`
    Overrides:
      `checkAccessible` in class `Java8`
    Parameters:
      `accessingClass` - callerClass the callerClass to invoke `setAccessible`
      `declaringClass` - the type of member owner
      `memberModifiers` - modifiers of member
      `allowIllegalAccess` - whether to allow illegal access
    Returns:
      the result of checking