Class ParamReader

All Implemented Interfaces:
Closeable, AutoCloseable

public class ParamReader extends ClassReader
This is the class file reader for obtaining the parameter names for declared methods in a class. The class must have debugging attributes for us to obtain this information.

This does not work for inherited methods. To obtain parameter names for inherited methods, you must use a paramReader for the class that originally declared the method.

don't get tricky, it's the bare minimum. Instances of this class are not threadsafe -- don't share them.

Author:
Edwin Smith, Macromedia
  • Constructor Details

    • ParamReader

      public ParamReader(Class c) throws IOException
      process a class file, given it's class. We'll use the defining classloader to locate the bytecode.
      Parameters:
      c -
      Throws:
      IOException
    • ParamReader

      public ParamReader(byte[] b) throws IOException
      process the given class bytes directly.
      Parameters:
      b -
      Throws:
      IOException
  • Method Details

    • readCode

      public void readCode() throws IOException
      Description copied from class: ClassReader
      read a code attribute
      Overrides:
      readCode in class ClassReader
      Throws:
      IOException
    • getParameterNames

      public String[] getParameterNames(Constructor ctor)
      return the names of the declared parameters for the given constructor. If we cannot determine the names, return null. The returned array will have one name per parameter. The length of the array will be the same as the length of the Class[] array returned by Constructor.getParameterTypes().
      Parameters:
      ctor -
      Returns:
      String[] array of names, one per parameter, or null
    • getParameterNames

      public String[] getParameterNames(Method method)
      return the names of the declared parameters for the given method. If we cannot determine the names, return null. The returned array will have one name per parameter. The length of the array will be the same as the length of the Class[] array returned by Method.getParameterTypes().
      Parameters:
      method -
      Returns:
      String[] array of names, one per parameter, or null
    • getParameterNames

      protected String[] getParameterNames(Member member, Class[] paramTypes)
    • readLocalVariableTable

      public void readLocalVariableTable() throws IOException
      this is invoked when a LocalVariableTable attribute is encountered.
      Throws:
      IOException