Class Java9

  • All Implemented Interfaces:
    VMPlugin
    Direct Known Subclasses:
    Java10

    public class Java9
    extends Java8
    Additional Java 9 based functions will be added here as needed.
    • Constructor Detail

      • Java9

        public Java9()
    • Method Detail

      • 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
      • 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
      • 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 callerClass 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<?> callerClass,
                                       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:
        callerClass - 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