| java.lang.Object javassist.CtMember javassist.CtBehavior
All known Subclasses: javassist.CtConstructor, javassist.CtMethod,
CtBehavior | abstract public class CtBehavior extends CtMember (Code) | | CtBehavior represents a method, a constructor,
or a static constructor (class initializer).
It is the abstract super class of
CtMethod and CtConstructor .
|
Method Summary | |
public void | addCatch(String src, CtClass exceptionType) Adds a catch clause that handles an exception thrown in the
body. | public void | addCatch(String src, CtClass exceptionType, String exceptionName) Adds a catch clause that handles an exception thrown in the
body. | public void | addLocalVariable(String name, CtClass type) Declares a new local variable. | void | copy(CtBehavior src, boolean isCons, ClassMap map) | protected void | extendToString(StringBuffer buffer) | public Object[] | getAnnotations() Returns the annotations associated with this method or constructor. | public byte[] | getAttribute(String name) Obtains an attribute with the given name.
If that attribute is not found in the class file, this
method returns null.
Note that an attribute is a data block specified by
the class file format. | public Object[] | getAvailableAnnotations() Returns the annotations associated with this method or constructor. | public Object[][] | getAvailableParameterAnnotations() Returns the parameter annotations associated with this method or constructor.
If any annotations are not on the classpath, they are not included in the
returned array.
an array of annotation-type objects. | public CtClass[] | getExceptionTypes() Obtains exceptions that this method/constructor may throw. | public MethodInfo | getMethodInfo() Returns the MethodInfo representing this method/constructor in the
class file. | public MethodInfo | getMethodInfo2() Returns the MethodInfo representing the method/constructor in the
class file (read only).
Normal applications do not need calling this method. | public int | getModifiers() Obtains the modifiers of the method/constructor. | public Object[][] | getParameterAnnotations() Returns the parameter annotations associated with this method or constructor.
an array of annotation-type objects. | Object[][] | getParameterAnnotations(boolean ignoreNotFound) | public CtClass[] | getParameterTypes() Obtains parameter types of this method/constructor. | CtClass | getReturnType0() Obtains the type of the returned value. | public String | getSignature() Returns the method signature (the parameter types
and the return type). | int | getStartPosOfBody(CodeAttribute ca) | public void | insertAfter(String src) Inserts bytecode at the end of the body. | public void | insertAfter(String src, boolean asFinally) Inserts bytecode at the end of the body. | public int | insertAt(int lineNum, String src) Inserts bytecode at the specified line in the body.
It is equivalent to:
insertAt(lineNum, true, src)
See this method as well.
Parameters: lineNum - the line number. | public int | insertAt(int lineNum, boolean modify, String src) Inserts bytecode at the specified line in the body.
If there is not
a statement at the specified line, the bytecode might be inserted
at the line including the first statement after that line specified.
For example, if there is only a closing brace at that line, the
bytecode would be inserted at another line below.
To know exactly where the bytecode will be inserted, call with
modify set to false . | public void | insertBefore(String src) Inserts bytecode at the beginning of the body.
If this object represents a constructor,
the bytecode is inserted before
a constructor in the super class or this class is called.
Therefore, the inserted bytecode is subject to constraints described
in Section 4.8.2 of The Java Virtual Machine Specification (2nd ed).
For example, it cannot access instance fields or methods although
it may assign a value to an instance field directly declared in this
class. | public void | instrument(CodeConverter converter) Modifies the method/constructor body. | public void | instrument(ExprEditor editor) Modifies the method/constructor body. | abstract public boolean | isEmpty() Returns true if the body is empty. | public void | setAttribute(String name, byte[] data) Adds an attribute. | public void | setBody(String src) Sets a method/constructor body. | public void | setBody(String src, String delegateObj, String delegateMethod) Sets a method/constructor body. | static void | setBody0(CtClass srcClass, MethodInfo srcInfo, CtClass destClass, MethodInfo destInfo, ClassMap map) | public void | setExceptionTypes(CtClass[] types) Sets exceptions that this method/constructor may throw. | public void | setModifiers(int mod) Sets the encoded modifiers of the method/constructor. | public void | useCflow(String name) Declares to use $cflow for this method/constructor.
If $cflow is used, the class files modified
with Javassist requires a support class
javassist.runtime.Cflow at runtime
(other Javassist classes are not required at runtime).
Every $cflow variable is given a unique name.
For example, if the given name is "Point.paint" ,
then the variable is indicated by $cflow(Point.paint) .
Parameters: name - $cflow name. |
addCatch | public void addCatch(String src, CtClass exceptionType) throws CannotCompileException(Code) | | Adds a catch clause that handles an exception thrown in the
body. The catch clause must end with a return or throw statement.
Parameters: src - the source code representing the catch clause.It must be a single statement or block. Parameters: exceptionType - the type of the exception handled by thecatch clause. |
addCatch | public void addCatch(String src, CtClass exceptionType, String exceptionName) throws CannotCompileException(Code) | | Adds a catch clause that handles an exception thrown in the
body. The catch clause must end with a return or throw statement.
Parameters: src - the source code representing the catch clause.It must be a single statement or block. Parameters: exceptionType - the type of the exception handled by thecatch clause. Parameters: exceptionName - the name of the variable containing thecaught exception, for example,$e . |
addLocalVariable | public void addLocalVariable(String name, CtClass type) throws CannotCompileException(Code) | | Declares a new local variable. The scope of this variable is the
whole method body. The initial value of that variable is not set.
The declared variable can be accessed in the code snippet inserted
by insertBefore() , insertAfter() , etc.
If the second parameter asFinally to
insertAfter() is true, the declared local variable
is not visible from the code inserted by insertAfter() .
Parameters: name - the name of the variable Parameters: type - the type of the variable See Also: CtBehavior.insertBefore(String) See Also: CtBehavior.insertAfter(String) |
getAttribute | public byte[] getAttribute(String name)(Code) | | Obtains an attribute with the given name.
If that attribute is not found in the class file, this
method returns null.
Note that an attribute is a data block specified by
the class file format. It is not an annotation.
See
javassist.bytecode.AttributeInfo .
Parameters: name - attribute name |
getAvailableAnnotations | public Object[] getAvailableAnnotations()(Code) | | Returns the annotations associated with this method or constructor.
If any annotations are not on the classpath, they are not included
in the returned array.
an array of annotation-type objects. See Also: CtBehavior.getAnnotations() since: 3.3 |
getAvailableParameterAnnotations | public Object[][] getAvailableParameterAnnotations()(Code) | | Returns the parameter annotations associated with this method or constructor.
If any annotations are not on the classpath, they are not included in the
returned array.
an array of annotation-type objects. The length of the returned array isequal to the number of the formal parameters. If each parameter has noannotation, the elements of the returned array are empty arrays. See Also: CtBehavior.getParameterAnnotations() See Also: CtBehavior.getAvailableAnnotations() since: 3.3 |
getExceptionTypes | public CtClass[] getExceptionTypes() throws NotFoundException(Code) | | Obtains exceptions that this method/constructor may throw.
a zero-length array if there is no throws clause. |
getMethodInfo | public MethodInfo getMethodInfo()(Code) | | Returns the MethodInfo representing this method/constructor in the
class file.
|
getMethodInfo2 | public MethodInfo getMethodInfo2()(Code) | | Returns the MethodInfo representing the method/constructor in the
class file (read only).
Normal applications do not need calling this method. Use
getMethodInfo() .
The MethodInfo object obtained by this method
is read only. Changes to this object might not be reflected
on a class file generated by toBytecode() ,
toClass() , etc in CtClass .
This method is available even if the CtClass
containing this method is frozen. However, if the class is
frozen, the MethodInfo might be also pruned.
See Also: CtBehavior.getMethodInfo() See Also: CtClass.isFrozen See Also: CtClass.prune |
getModifiers | public int getModifiers()(Code) | | Obtains the modifiers of the method/constructor.
modifiers encoded withjavassist.Modifier . See Also: Modifier |
getSignature | public String getSignature()(Code) | | Returns the method signature (the parameter types
and the return type).
The method signature is represented by a character string
called method descriptor, which is defined in the JVM specification.
If two methods/constructors have
the same parameter types
and the return type, getSignature() returns the
same string (the return type of constructors is void ).
See Also: javassist.bytecode.Descriptor |
insertAfter | public void insertAfter(String src) throws CannotCompileException(Code) | | Inserts bytecode at the end of the body.
The bytecode is inserted just before every return insturction.
It is not executed when an exception is thrown.
Parameters: src - the source code representing the inserted bytecode.It must be a single statement or block. |
insertAfter | public void insertAfter(String src, boolean asFinally) throws CannotCompileException(Code) | | Inserts bytecode at the end of the body.
The bytecode is inserted just before every return insturction.
Parameters: src - the source code representing the inserted bytecode.It must be a single statement or block. Parameters: asFinally - true if the inserted bytecode is executednot only when the control normally returnsbut also when an exception is thrown.If this parameter is true, the inserted code cannotaccess local variables. |
insertAt | public int insertAt(int lineNum, String src) throws CannotCompileException(Code) | | Inserts bytecode at the specified line in the body.
It is equivalent to:
insertAt(lineNum, true, src)
See this method as well.
Parameters: lineNum - the line number. The bytecode is inserted at thebeginning of the code at the line specified by thisline number. Parameters: src - the source code representing the inserted bytecode.It must be a single statement or block. the line number at which the bytecode has been inserted. See Also: CtBehavior.insertAt(intbooleanString) |
insertAt | public int insertAt(int lineNum, boolean modify, String src) throws CannotCompileException(Code) | | Inserts bytecode at the specified line in the body.
If there is not
a statement at the specified line, the bytecode might be inserted
at the line including the first statement after that line specified.
For example, if there is only a closing brace at that line, the
bytecode would be inserted at another line below.
To know exactly where the bytecode will be inserted, call with
modify set to false .
Parameters: lineNum - the line number. The bytecode is inserted at thebeginning of the code at the line specified by thisline number. Parameters: modify - if false, this method does not insert the bytecode.It instead only returns the line number at whichthe bytecode would be inserted. Parameters: src - the source code representing the inserted bytecode.It must be a single statement or block.If modify is false, the value of src can be null. the line number at which the bytecode has been inserted. |
insertBefore | public void insertBefore(String src) throws CannotCompileException(Code) | | Inserts bytecode at the beginning of the body.
If this object represents a constructor,
the bytecode is inserted before
a constructor in the super class or this class is called.
Therefore, the inserted bytecode is subject to constraints described
in Section 4.8.2 of The Java Virtual Machine Specification (2nd ed).
For example, it cannot access instance fields or methods although
it may assign a value to an instance field directly declared in this
class. Accessing static fields and methods is allowed.
Use insertBeforeBody() in CtConstructor .
Parameters: src - the source code representing the inserted bytecode.It must be a single statement or block. See Also: CtConstructor.insertBeforeBody(String) |
isEmpty | abstract public boolean isEmpty()(Code) | | Returns true if the body is empty.
|
setAttribute | public void setAttribute(String name, byte[] data)(Code) | | Adds an attribute. The attribute is saved in the class file.
Note that an attribute is a data block specified by
the class file format. It is not an annotation.
See
javassist.bytecode.AttributeInfo .
Parameters: name - attribute name Parameters: data - attribute value |
setBody | public void setBody(String src) throws CannotCompileException(Code) | | Sets a method/constructor body.
Parameters: src - the source code representing the body.It must be a single statement or block.If it is null , the substitutedbody does nothing except returning zero or null. |
setBody | public void setBody(String src, String delegateObj, String delegateMethod) throws CannotCompileException(Code) | | Sets a method/constructor body.
Parameters: src - the source code representing the body.It must be a single statement or block.If it is null , the substitutedbody does nothing except returning zero or null. Parameters: delegateObj - the source text specifying the objectthat is called on by $proceed() . Parameters: delegateMethod - the name of the methodthat is called by $proceed() . |
setExceptionTypes | public void setExceptionTypes(CtClass[] types) throws NotFoundException(Code) | | Sets exceptions that this method/constructor may throw.
|
setModifiers | public void setModifiers(int mod)(Code) | | Sets the encoded modifiers of the method/constructor.
Changing the modifiers may cause a problem.
For example, if a non-static method is changed to static,
the method will be rejected by the bytecode verifier.
See Also: Modifier |
useCflow | public void useCflow(String name) throws CannotCompileException(Code) | | Declares to use $cflow for this method/constructor.
If $cflow is used, the class files modified
with Javassist requires a support class
javassist.runtime.Cflow at runtime
(other Javassist classes are not required at runtime).
Every $cflow variable is given a unique name.
For example, if the given name is "Point.paint" ,
then the variable is indicated by $cflow(Point.paint) .
Parameters: name - $cflow name. It can includealphabets, numbers, _ ,$ , and . (dot). See Also: javassist.runtime.Cflow |
|
|