Class Java5

  • All Implemented Interfaces:
    VMPlugin
    Direct Known Subclasses:
    Java6

    public class Java5
    extends Object
    implements VMPlugin
    java 5 based functions
    • Constructor Detail

      • Java5

        public Java5()
    • Method Detail

      • configureTypeVariableReference

        public static ClassNode configureTypeVariableReference​(String name)
      • getElementCode

        protected int getElementCode​(ElementType value)
      • getInvokeSpecialHandle

        public Object getInvokeSpecialHandle​(Method m,
                                             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
        Returns:
        null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
      • getVersion

        public int getVersion()
        Description copied from interface: VMPlugin
        Gives the version the plugin is made for
        Specified by:
        getVersion in interface VMPlugin
        Returns:
        7 for jdk7, 8 for jdk8, 9 for jdk9 or higher
      • invokeHandle

        public Object invokeHandle​(Object handle,
                                   Object[] args)
                            throws Throwable
        Description copied from interface: VMPlugin
        Invokes a handle produced by #getInvokeSpecialdHandle
        Specified by:
        invokeHandle in interface VMPlugin
        Parameters:
        handle - the handle
        args - arguments for the method call, can be empty but not null
        Returns:
        the result of the method call
        Throws:
        Throwable
      • checkCanSetAccessible

        public boolean checkCanSetAccessible​(AccessibleObject accessibleObject,
                                             Class<?> callerClass)
        The following scenarios can not set accessible, i.e. the return value is false 1) SecurityException occurred 2) the accessible object is a Constructor object for the Class class
        Specified by:
        checkCanSetAccessible in interface VMPlugin
        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
        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<?>[] params,
                                              Class<?> caller)
        Description copied from interface: VMPlugin
        transform meta method
        Specified by:
        transformMetaMethod in interface VMPlugin
        Parameters:
        metaClass - meta class
        metaMethod - the original meta method
        params - parameter types
        caller - caller type
        Returns:
        the transformed meta method