edu.rit.classfile
Class SynthesizedInterfaceMethodDescription

java.lang.Object
  extended by edu.rit.classfile.SubroutineReference
      extended by edu.rit.classfile.SubroutineDescription
          extended by edu.rit.classfile.SynthesizedSubroutineDescription
              extended by edu.rit.classfile.SynthesizedInterfaceMethodDescription

public class SynthesizedInterfaceMethodDescription
extends SynthesizedSubroutineDescription

Class SynthesizedInterfaceMethodDescription is used to synthesize a subroutine description for some actual interface method. All interface methods are public, abstract, non-final, and non-static. To synthesize an interface method:

  1. Create an instance of class SynthesizedInterfaceMethodDescription, specifying the interface and the method name.

  2. Specify the method's return type, if any.

  3. Add the method's argument types in order, if any.

  4. Add the method's thrown exceptions in order, if any.

Or:

  1. Create an instance of class SynthesizedInterfaceMethodDescription, specifying the interface and the method name.

  2. Specify the method descriptor, if the method does not return void or if the method has arguments.

  3. Add the method's thrown exceptions in order, if any.

Or:

  1. Create an instance of class SynthesizedInterfaceMethodDescription, specifying the interface, the method name, and the method descriptor, if the method does not return void or if the method has arguments.

  2. Add the method's thrown exceptions in order, if any.

In the documentation below, the term "described method" means "the synthesized interface method described by this synthesized interface method description object."


Constructor Summary
SynthesizedInterfaceMethodDescription(SynthesizedInterfaceDescription theInterfaceDescription, String theMethodName)
          Construct a new synthesized interface method description object with the given name.
SynthesizedInterfaceMethodDescription(SynthesizedInterfaceDescription theInterfaceDescription, String theMethodName, String theMethodDescriptor)
          Construct a new synthesized interface method description object with the given name and method descriptor.
 
Method Summary
 void addArgumentType(TypeReference theArgumentType)
          Add an argument to the described method.
 void addThrownException(ClassReference theExceptionClass)
          Add a thrown exception to the described method.
 void setMethodDescriptor(String theMethodDescriptor)
          Specify the described method's method descriptor.
 void setReturnType(TypeReference theReturnType)
          Specify the described method's return type.
 
Methods inherited from class edu.rit.classfile.SubroutineDescription
getCodeLength, getExceptionHandlers, getInstructions, getMaxLocals, getMaxStack, getThrownExceptions, isAbstract, isFinal, isNative, isPackageScoped, isPrivate, isProtected, isPublic, isStatic, isStrictfp, isSynchronized
 
Methods inherited from class edu.rit.classfile.SubroutineReference
equals, getArgumentTypes, getArgumentWordCount, getClassReference, getMethodDescriptor, getMethodName, getReturnType, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SynthesizedInterfaceMethodDescription

public SynthesizedInterfaceMethodDescription(SynthesizedInterfaceDescription theInterfaceDescription,
                                             String theMethodName)
                                      throws ListFullException
Construct a new synthesized interface method description object with the given name. Initially, the described method is public, is abstract, has a return type of void, has no arguments, and throws no exceptions. As a side effect, the new synthesized interface method description object is added to the given synthesized interface description object.

Parameters:
theInterfaceDescription - Interface containing this method.
theMethodName - Method name.
Throws:
NullPointerException - (unchecked exception) Thrown if theInterfaceDescription is null or theMethodName is null.
IllegalArgumentException - (unchecked exception) Thrown if theMethodName is zero length.
ListFullException - Thrown if theInterfaceDescription's subroutine list is full (i.e., contains 65535 subroutines).

SynthesizedInterfaceMethodDescription

public SynthesizedInterfaceMethodDescription(SynthesizedInterfaceDescription theInterfaceDescription,
                                             String theMethodName,
                                             String theMethodDescriptor)
                                      throws ListFullException
Construct a new synthesized interface method description object with the given name and method descriptor. Initially, the described method is public, is abstract, has a return type and arguments as specified by theMethodDescriptor, and throws no exceptions. As a side effect, the new synthesized interface method description object is added to the given synthesized interface description object.

Parameters:
theInterfaceDescription - Interface containing this method.
theMethodName - Method name.
theMethodDescriptor - Method descriptor in the format specified by Section 4.3.3 of the Java Virtual Machine Specification, Second Edition.
Throws:
NullPointerException - (unchecked exception) Thrown if theInterfaceDescription is null or theMethodName is null or theMethodDescriptor is null.
IllegalArgumentException - (unchecked exception) Thrown if theMethodName is zero length. Thrown if theMethodDescriptor does not obey the syntax of a method descriptor. Thrown if the number of arguments in theMethodDescriptor exceeds the limit (254).
ListFullException - Thrown if theInterfaceDescription's subroutine list is full (i.e., contains 65535 subroutines).
Method Detail

setReturnType

public void setReturnType(TypeReference theReturnType)
Specify the described method's return type.

Parameters:
theReturnType - Type reference for the return type, or null if the described method returns void.
Throws:
IllegalStateException - (unchecked exception) Thrown if the return type cannot be altered because this method description is already in use.

addArgumentType

public void addArgumentType(TypeReference theArgumentType)
                     throws ListFullException
Add an argument to the described method.

Parameters:
theArgumentType - Argument's type reference.
Throws:
NullPointerException - (unchecked exception) Thrown if theArgumentType is null.
IllegalStateException - (unchecked exception) Thrown if further argument types cannot be added because this method description is already in use.
ListFullException - Thrown if adding theArgumentType would cause the described method's argument word count to exceed the limit (254).

setMethodDescriptor

public void setMethodDescriptor(String theMethodDescriptor)
Specify the described method's method descriptor.

Parameters:
theMethodDescriptor - Method descriptor in the format specified by Section 4.3.3 of the Java Virtual Machine Specification, Second Edition.
Throws:
NullPointerException - (unchecked exception) Thrown if theMethodDescriptor is null.
IllegalStateException - (unchecked exception) Thrown if the method descriptor cannot be set because this method description is already in use.
IllegalArgumentException - (unchecked exception) Thrown if theMethodDescriptor does not obey the syntax of a method descriptor. Thrown if the number of arguments in theMethodDescriptor exceeds the limit (254).

addThrownException

public void addThrownException(ClassReference theExceptionClass)
                        throws ListFullException
Add a thrown exception to the described method.

Parameters:
theExceptionClass - Exception's class reference.
Throws:
NullPointerException - (unchecked exception) Thrown if theExceptionClass is null.
ListFullException - Thrown if the requisite constant pool entries could not be added because the constant pool is full. Also thrown if the described method's thrown exception list is full (i.e., contains 65535 thrown exceptions).


Copyright © 2001-2006 by Alan Kaminsky. All rights reserved. Send comments to ark­@­cs.rit.edu.