Class Java9

  • All Implemented Interfaces:
    VMPlugin

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

      • Java9

        public Java9()
    • Method Detail

      • 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
      • 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 Java7
        Returns:
        null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
      • 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 Java5.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 Java5
        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 Java5
        Parameters:
        ao - the accessible object
        Returns:
        true if the accessible flag is set to true; false if access cannot be enabled.