Class Java16

All Implemented Interfaces:
VMPlugin

public class Java16 extends Java10
  • Constructor Details

    • Java16

      public Java16()
  • 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 Java10
      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 Java8
      Returns:
      null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
    • 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
      Overrides:
      invokeHandle in class Java8
      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
    • makeRecordComponents

      protected void makeRecordComponents(CompileUnit cu, ClassNode cn, Class<?> c)
      Overrides:
      makeRecordComponents in class Java8
    • getRecordComponentNames

      @Incubating public List<String> getRecordComponentNames(Class<?> maybeRecord)
      Description copied from interface: VMPlugin
      Returns the list of record component names or the empty list if the class is not a record or running on a pre16 JDK.
      Parameters:
      maybeRecord - the class in question
      Returns:
      the default list of names