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 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 - meta class
      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