Class CtMethod
- java.lang.Object
-
- javassist.CtMember
-
- javassist.CtBehavior
-
- javassist.CtMethod
-
public final class CtMethod extends CtBehavior
An instance ofCtMethod
represents a method.See the super class
CtBehavior
since a number of useful methods are inCtBehavior
. A number of useful factory methods are inCtNewMethod
.- See Also:
CtClass.getDeclaredMethods()
,CtNewMethod
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CtMethod.ConstParameter
Instances of this class represent a constant parameter.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
Indicates whetherobj
has the same name and the same signature as this method.java.lang.String
getLongName()
Returns the method name followed by parameter types such asjavassist.CtMethod.setBody(String)
.java.lang.String
getName()
Obtains the name of this method.CtClass
getReturnType()
Obtains the type of the returned value.int
hashCode()
Returns a hash code value for the method.boolean
isEmpty()
Returns true if the method body is empty, that is,{}
.static CtMethod
make(java.lang.String src, CtClass declaring)
Compiles the given source code and creates a method.static CtMethod
make(MethodInfo minfo, CtClass declaring)
Creates a method from aMethodInfo
object.void
setBody(CtMethod src, ClassMap map)
Copies a method body from another method.void
setName(java.lang.String newname)
Changes the name of this method.void
setWrappedBody(CtMethod mbody, CtMethod.ConstParameter constParam)
Replace a method body with a new method body wrapping the given method.-
Methods inherited from class javassist.CtBehavior
addCatch, addCatch, addLocalVariable, addParameter, getAnnotation, getAnnotations, getAttribute, getAvailableAnnotations, getAvailableParameterAnnotations, getExceptionTypes, getGenericSignature, getMethodInfo, getMethodInfo2, getModifiers, getParameterAnnotations, getParameterTypes, getSignature, hasAnnotation, insertAfter, insertAfter, insertAfter, insertAt, insertAt, insertBefore, insertParameter, instrument, instrument, setAttribute, setBody, setBody, setExceptionTypes, setGenericSignature, setModifiers, useCflow
-
Methods inherited from class javassist.CtMember
getDeclaringClass, hasAnnotation, toString, visibleFrom
-
-
-
-
Constructor Detail
-
CtMethod
public CtMethod(CtClass returnType, java.lang.String mname, CtClass[] parameters, CtClass declaring)
Creates a public abstract method. The created method must be added to a class withCtClass.addMethod()
.- Parameters:
declaring
- the class to which the created method is added.returnType
- the type of the returned valuemname
- the method nameparameters
- a list of the parameter types- See Also:
CtClass.addMethod(CtMethod)
-
CtMethod
public CtMethod(CtMethod src, CtClass declaring, ClassMap map) throws CannotCompileException
Creates a copy of aCtMethod
object. The created method must be added to a class withCtClass.addMethod()
.All occurrences of class names in the created method are replaced with names specified by
map
ifmap
is notnull
.For example, suppose that a method
at()
is as follows:public X at(int i) { return (X)super.elementAt(i); }
(
X
is a class name.) Ifmap
substitutesString
forX
, then the created method is:public String at(int i) { return (String)super.elementAt(i); }
By default, all the occurrences of the names of the class declaring
at()
and the superclass are replaced with the name of the class and the superclass that the created method is added to. This is done whichevermap
is null or not. To prevent this replacement, callClassMap.fix()
orput()
to explicitly specify replacement.Note: if the
.class
notation (for example,String.class
) is included in an expression, the Javac compiler may produce a helper method. Since this constructor never copies this helper method, the programmers have the responsiblity of copying it. Otherwise, useClass.forName()
in the expression.- Parameters:
src
- the source method.declaring
- the class to which the created method is added.map
- the hashtable associating original class names with substituted names. It can benull
.- Throws:
CannotCompileException
- See Also:
CtClass.addMethod(CtMethod)
,ClassMap.fix(String)
-
-
Method Detail
-
make
public static CtMethod make(java.lang.String src, CtClass declaring) throws CannotCompileException
Compiles the given source code and creates a method. This method simply delegates tomake()
inCtNewMethod
. See it for more details.CtNewMethod
has a number of useful factory methods.- Parameters:
src
- the source text.declaring
- the class to which the created method is added.- Throws:
CannotCompileException
- See Also:
CtNewMethod.make(String, CtClass)
-
make
public static CtMethod make(MethodInfo minfo, CtClass declaring) throws CannotCompileException
Creates a method from aMethodInfo
object.- Parameters:
declaring
- the class declaring the method.- Throws:
CannotCompileException
- if the theMethodInfo
object and the declaring class have differentConstPool
objects- Since:
- 3.6
-
hashCode
public int hashCode()
Returns a hash code value for the method. If two methods have the same name and signature, then the hash codes for the two methods are equal.- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
Indicates whetherobj
has the same name and the same signature as this method.- Overrides:
equals
in classjava.lang.Object
-
getLongName
public java.lang.String getLongName()
Returns the method name followed by parameter types such asjavassist.CtMethod.setBody(String)
.- Specified by:
getLongName
in classCtBehavior
- Since:
- 3.5
-
getName
public java.lang.String getName()
Obtains the name of this method.- Specified by:
getName
in classCtMember
- See Also:
CtConstructor.getName()
-
setName
public void setName(java.lang.String newname)
Changes the name of this method.
-
getReturnType
public CtClass getReturnType() throws NotFoundException
Obtains the type of the returned value.- Throws:
NotFoundException
-
isEmpty
public boolean isEmpty()
Returns true if the method body is empty, that is,{}
. It also returns true if the method is an abstract method.- Specified by:
isEmpty
in classCtBehavior
-
setBody
public void setBody(CtMethod src, ClassMap map) throws CannotCompileException
Copies a method body from another method. If this method is abstract, the abstract modifier is removed after the method body is copied.All occurrences of the class names in the copied method body are replaced with the names specified by
map
ifmap
is notnull
.- Parameters:
src
- the method that the body is copied from.map
- the hashtable associating original class names with substituted names. It can benull
.- Throws:
CannotCompileException
-
setWrappedBody
public void setWrappedBody(CtMethod mbody, CtMethod.ConstParameter constParam) throws CannotCompileException
Replace a method body with a new method body wrapping the given method.- Parameters:
mbody
- the wrapped methodconstParam
- the constant parameter given to the wrapped method (maybenull
).- Throws:
CannotCompileException
- See Also:
CtNewMethod.wrapped(CtClass,String,CtClass[],CtClass[],CtMethod,CtMethod.ConstParameter,CtClass)
-
-