public class Descriptor
extends java.lang.Object
See chapter 4.3 in "The Java Virtual Machine Specification (2nd ed.)"
Modifier and Type | Class and Description |
---|---|
static class |
Descriptor.Iterator
An Iterator over a descriptor.
|
Constructor and Description |
---|
Descriptor() |
Modifier and Type | Method and Description |
---|---|
static java.lang.String |
appendParameter(CtClass type,
java.lang.String descriptor)
Appends a parameter type to the parameter list represented
by the given descriptor.
|
static java.lang.String |
appendParameter(java.lang.String classname,
java.lang.String desc)
Appends a parameter type to the parameter list represented
by the given descriptor.
|
static int |
arrayDimension(java.lang.String desc)
Computes the dimension of the array represented by the given
descriptor.
|
static java.lang.String |
changeReturnType(java.lang.String classname,
java.lang.String desc)
Changes the return type included in the given descriptor.
|
static int |
dataSize(java.lang.String desc)
Computes the data size specified by the given descriptor.
|
static boolean |
eqParamTypes(java.lang.String desc1,
java.lang.String desc2)
Returns true if the list of the parameter types of desc1 is equal to
that of desc2.
|
static java.lang.String |
getParamDescriptor(java.lang.String decl)
Returns the signature of the given descriptor.
|
static CtClass[] |
getParameterTypes(java.lang.String desc,
ClassPool cp)
Returns the
CtClass objects representing the parameter
types specified by the given descriptor. |
static CtClass |
getReturnType(java.lang.String desc,
ClassPool cp)
Returns the
CtClass object representing the return
type specified by the given descriptor. |
static java.lang.String |
insertParameter(CtClass type,
java.lang.String descriptor)
Inserts a parameter type at the beginning of the parameter
list represented
by the given descriptor.
|
static java.lang.String |
insertParameter(java.lang.String classname,
java.lang.String desc)
Inserts a parameter type at the beginning of the parameter
list represented
by the given descriptor.
|
static int |
numOfParameters(java.lang.String desc)
Returns the number of the prameters included in the given
descriptor.
|
static java.lang.String |
of(CtClass type)
Returns the descriptor representing the given type.
|
static java.lang.String |
of(java.lang.String classname)
Converts to a descriptor from a Java class name
|
static java.lang.String |
ofConstructor(CtClass[] paramTypes)
Returns the descriptor representing a constructor receiving
the given parameter types.
|
static java.lang.String |
ofMethod(CtClass returnType,
CtClass[] paramTypes)
Returns the descriptor representing a method that receives
the given parameter types and returns the given type.
|
static java.lang.String |
ofParameters(CtClass[] paramTypes)
Returns the descriptor representing a list of parameter types.
|
static int |
paramSize(java.lang.String desc)
Computes the data size of parameters.
|
static java.lang.String |
rename(java.lang.String desc,
java.util.Map map)
Substitutes class names in the given descriptor string
according to the given
map . |
static java.lang.String |
rename(java.lang.String desc,
java.lang.String oldname,
java.lang.String newname)
Substitutes a class name
in the given descriptor string.
|
static java.lang.String |
toArrayComponent(java.lang.String desc,
int dim)
Returns the descriptor of the type of the array component.
|
static java.lang.String |
toClassName(java.lang.String descriptor)
Converts to a Java class name from a descriptor.
|
static CtClass |
toCtClass(java.lang.String desc,
ClassPool cp)
Returns a
CtClass object representing the type
specified by the given descriptor. |
static java.lang.String |
toJavaName(java.lang.String classname)
Converts a class name from the internal representation used in
the JVM to the normal one used in Java.
|
static java.lang.String |
toJvmName(CtClass clazz)
Returns the internal representation of the class name in the
JVM.
|
static java.lang.String |
toJvmName(java.lang.String classname)
Converts a class name into the internal representation used in
the JVM.
|
static java.lang.String |
toString(java.lang.String desc)
Returns a human-readable representation of the
given descriptor.
|
public static java.lang.String toJvmName(java.lang.String classname)
Note that toJvmName(toJvmName(s))
is equivalent
to toJvmName(s)
.
public static java.lang.String toJavaName(java.lang.String classname)
toClassName()
.toClassName(String)
public static java.lang.String toJvmName(CtClass clazz)
public static java.lang.String toClassName(java.lang.String descriptor)
descriptor
- type descriptor.public static java.lang.String of(java.lang.String classname)
public static java.lang.String rename(java.lang.String desc, java.lang.String oldname, java.lang.String newname)
desc
- descriptor stringoldname
- replaced JVM class namenewname
- substituted JVM class nametoJvmName(String)
public static java.lang.String rename(java.lang.String desc, java.util.Map map)
map
.map
- a map between replaced and substituted
JVM class names.toJvmName(String)
public static java.lang.String of(CtClass type)
public static java.lang.String ofConstructor(CtClass[] paramTypes)
paramTypes
- parameter typespublic static java.lang.String ofMethod(CtClass returnType, CtClass[] paramTypes)
returnType
- return typeparamTypes
- parameter typespublic static java.lang.String ofParameters(CtClass[] paramTypes)
int
,
then this method returns "(II)"
.paramTypes
- parameter typespublic static java.lang.String appendParameter(java.lang.String classname, java.lang.String desc)
classname
must not be an array type.
classname
- parameter type (not primitive type)desc
- descriptorpublic static java.lang.String insertParameter(java.lang.String classname, java.lang.String desc)
classname
must not be an array type.
classname
- parameter type (not primitive type)desc
- descriptorpublic static java.lang.String appendParameter(CtClass type, java.lang.String descriptor)
type
- the type of the appended parameter.descriptor
- the original descriptor.public static java.lang.String insertParameter(CtClass type, java.lang.String descriptor)
type
- the type of the inserted parameter.descriptor
- the descriptor of the method.public static java.lang.String changeReturnType(java.lang.String classname, java.lang.String desc)
classname
must not be an array type.
classname
- return typedesc
- descriptorpublic static CtClass[] getParameterTypes(java.lang.String desc, ClassPool cp) throws NotFoundException
CtClass
objects representing the parameter
types specified by the given descriptor.desc
- descriptorcp
- the class pool used for obtaining
a CtClass
object.NotFoundException
public static boolean eqParamTypes(java.lang.String desc1, java.lang.String desc2)
public static java.lang.String getParamDescriptor(java.lang.String decl)
public static CtClass getReturnType(java.lang.String desc, ClassPool cp) throws NotFoundException
CtClass
object representing the return
type specified by the given descriptor.desc
- descriptorcp
- the class pool used for obtaining
a CtClass
object.NotFoundException
public static int numOfParameters(java.lang.String desc)
desc
- descriptorpublic static CtClass toCtClass(java.lang.String desc, ClassPool cp) throws NotFoundException
CtClass
object representing the type
specified by the given descriptor.
This method works even if the package-class separator is
not /
but .
(period). For example,
it accepts Ljava.lang.Object;
as well as Ljava/lang/Object;
.
desc
- descriptor.cp
- the class pool used for obtaining
a CtClass
object.NotFoundException
public static int arrayDimension(java.lang.String desc)
"[[I"
,
then this method returns 2.desc
- the descriptor.public static java.lang.String toArrayComponent(java.lang.String desc, int dim)
"[[Ljava/lang/String;"
and the given dimension is 2,
then this method returns "Ljava/lang/String;"
.desc
- the descriptor.dim
- the array dimension.public static int dataSize(java.lang.String desc)
If the descriptor represents a method type, this method returns
(the size of the returned value) - (the sum of the data sizes
of all the parameters). For example, if the descriptor is
"(I)D"
, then this method returns 1 (= 2 - 1).
desc
- descriptorpublic static int paramSize(java.lang.String desc)
"(IJ)D"
, then this method returns 3. The size of the
return type is not computed.desc
- a method descriptor.public static java.lang.String toString(java.lang.String desc)
Ljava/lang/Object;
is converted into java.lang.Object
.
(I[I)V
is converted into (int, int[])
(the return type is ignored).Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.