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`

public class Java9 extends Java8

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Java9()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `checkAccessible(Class<?> accessingClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)`
  check whether the member can be accessed or not
  `boolean`
  `checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)`
  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)`
  Returns the default import classes: class name -> the relevant package names
  `protected static Constructor<MethodHandles.Lookup>`
  `getLookupConstructor()`
  `Class<?>[]`
  `getPluginDefaultGroovyMethods()`
  `protected static Method`
  `getPrivateLookup()`
  `int`
  `getVersion()`
  Gives the version the plugin is made for
  `protected MethodHandles.Lookup`
  `newLookup(Class<?> declaringClass)`
  `MetaMethod`
  `transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)`
  transform meta method
  `boolean`
  `trySetAccessible(AccessibleObject ao)`
  Set the `accessible` flag for this reflected object to `true` if possible.

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

  `configureAnnotation, configureAnnotation, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, doPrivileged, doPrivileged, fillParameterNames, getElementCode, getInvokeSpecialHandle, getLookup, getPluginStaticGroovyMethods, invalidateCallSites, invokeHandle, makeClassNode, makeRecordComponents, of, setAdditionalClassInformation, transformMetaMethod`

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

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

- ## Constructor Details

  - ### Java9

    public Java9()

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

  - ### getPluginDefaultGroovyMethods

    public Class<?>[] getPluginDefaultGroovyMethods()
    Specified by:
      `getPluginDefaultGroovyMethods` in interface `VMPlugin`
    Overrides:
      `getPluginDefaultGroovyMethods` in class `Java8`

  - ### getDefaultImportClasses

    public Map<String,Set<String>> getDefaultImportClasses(String[] packageNames)
    Description copied from interface: `VMPlugin`
    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<?> declaringClass)
    Overrides:
      `newLookup` in class `Java8`

  - ### getLookupConstructor

    protected static Constructor<MethodHandles.Lookup> getLookupConstructor()

  - ### getPrivateLookup

    protected static Method getPrivateLookup()

  - ### checkCanSetAccessible

    public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)
    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

  - ### trySetAccessible

    public boolean trySetAccessible(AccessibleObject ao)
    Description copied from interface: `VMPlugin`
    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.

  - ### transformMetaMethod

    public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)
    Description copied from interface: `VMPlugin`
    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

  - ### checkAccessible

    public boolean checkAccessible(Class<?> accessingClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)
    Description copied from interface: `VMPlugin`
    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