javassist.bytecode

Class Descriptor

public class Descriptor extends Object

A support class for dealing with descriptors.

See chapter 4.3 in "The Java Virtual Machine Specification (2nd ed.)"

Nested Class Summary
static classDescriptor.Iterator
An Iterator over a descriptor.
Method Summary
static StringappendParameter(String classname, String desc)
Appends a parameter type to the parameter list represented by the given descriptor.
static intarrayDimension(String desc)
Computes the dimension of the array represented by the given descriptor.
static StringchangeReturnType(String classname, String desc)
Changes the return type included in the given descriptor.
static intdataSize(String desc)
Computes the data size specified by the given descriptor.
static booleaneqParamTypes(String desc1, String desc2)
Returns true if the list of the parameter types of desc1 is equal to that of desc2.
static StringgetParamDescriptor(String decl)
Returns the signature of the given descriptor.
static CtClass[]getParameterTypes(String desc, ClassPool cp)
Returns the CtClass objects representing the parameter types specified by the given descriptor.
static CtClassgetReturnType(String desc, ClassPool cp)
Returns the CtClass object representing the return type specified by the given descriptor.
static StringinsertParameter(String classname, String desc)
Inserts a parameter type at the beginning of the parameter list represented by the given descriptor.
static intnumOfParameters(String desc)
Returns the number of the prameters included in the given descriptor.
static Stringof(String classname)
Converts to a descriptor from a Java class name
static Stringof(CtClass type)
Returns the descriptor representing the given type.
static StringofConstructor(CtClass[] paramTypes)
Returns the descriptor representing a constructor receiving the given parameter types.
static StringofMethod(CtClass returnType, CtClass[] paramTypes)
Returns the descriptor representing a method that receives the given parameter types and returns the given type.
static StringofParameters(CtClass[] paramTypes)
Returns the descriptor representing a list of parameter types.
static intparamSize(String desc)
Computes the data size of parameters.
static Stringrename(String desc, String oldname, String newname)
Substitutes a class name in the given descriptor string.
static Stringrename(String desc, Map map)
Substitutes class names in the given descriptor string according to the given map.
static StringtoArrayComponent(String desc, int dim)
Returns the descriptor of the type of the array component.
static StringtoClassName(String descriptor)
Converts to a Java class name from a descriptor.
static CtClasstoCtClass(String desc, ClassPool cp)
Returns a CtClass object representing the type specified by the given descriptor.
static StringtoJavaName(String classname)
Converts a class name from the internal representation used in the JVM to the normal one used in Java.
static StringtoJvmName(String classname)
Converts a class name into the internal representation used in the JVM.
static StringtoJvmName(CtClass clazz)
Returns the internal representation of the class name in the JVM.
static StringtoString(String desc)
Returns a human-readable representation of the given descriptor.

Method Detail

appendParameter

public static String appendParameter(String classname, String desc)
Appends a parameter type to the parameter list represented by the given descriptor.

classname must not be an array type.

Parameters: classname parameter type (not primitive type) desc descriptor

arrayDimension

public static int arrayDimension(String desc)
Computes the dimension of the array represented by the given descriptor. For example, if the descriptor is "[[I", then this method returns 2.

Parameters: desc the descriptor.

Returns: 0 if the descriptor does not represent an array type.

changeReturnType

public static String changeReturnType(String classname, String desc)
Changes the return type included in the given descriptor.

classname must not be an array type.

Parameters: classname return type desc descriptor

dataSize

public static int dataSize(String desc)
Computes the data size specified by the given descriptor. For example, if the descriptor is "D", this method returns 2.

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).

Parameters: desc descriptor

eqParamTypes

public static boolean eqParamTypes(String desc1, String desc2)
Returns true if the list of the parameter types of desc1 is equal to that of desc2. For example, "(II)V" and "(II)I" are equal.

getParamDescriptor

public static String getParamDescriptor(String decl)
Returns the signature of the given descriptor. The signature does not include the return type. For example, the signature of "(I)V" is "(I)".

getParameterTypes

public static CtClass[] getParameterTypes(String desc, ClassPool cp)
Returns the CtClass objects representing the parameter types specified by the given descriptor.

Parameters: desc descriptor cp the class pool used for obtaining a CtClass object.

getReturnType

public static CtClass getReturnType(String desc, ClassPool cp)
Returns the CtClass object representing the return type specified by the given descriptor.

Parameters: desc descriptor cp the class pool used for obtaining a CtClass object.

insertParameter

public static String insertParameter(String classname, String desc)
Inserts a parameter type at the beginning of the parameter list represented by the given descriptor.

classname must not be an array type.

Parameters: classname parameter type (not primitive type) desc descriptor

numOfParameters

public static int numOfParameters(String desc)
Returns the number of the prameters included in the given descriptor.

Parameters: desc descriptor

of

public static String of(String classname)
Converts to a descriptor from a Java class name

of

public static String of(CtClass type)
Returns the descriptor representing the given type.

ofConstructor

public static String ofConstructor(CtClass[] paramTypes)
Returns the descriptor representing a constructor receiving the given parameter types.

Parameters: paramTypes parameter types

ofMethod

public static String ofMethod(CtClass returnType, CtClass[] paramTypes)
Returns the descriptor representing a method that receives the given parameter types and returns the given type.

Parameters: returnType return type paramTypes parameter types

ofParameters

public static String ofParameters(CtClass[] paramTypes)
Returns the descriptor representing a list of parameter types. For example, if the given parameter types are two int, then this method returns "(II)".

Parameters: paramTypes parameter types

paramSize

public static int paramSize(String desc)
Computes the data size of parameters. If one of the parameters is double type, the size of that parameter is 2 words. For example, if the given descriptor is "(IJ)D", then this method returns 3. The size of the return type is not computed.

Parameters: desc a method descriptor.

rename

public static String rename(String desc, String oldname, String newname)
Substitutes a class name in the given descriptor string.

Parameters: desc descriptor string oldname replaced JVM class name newname substituted JVM class name

See Also: toJvmName

rename

public static String rename(String desc, Map map)
Substitutes class names in the given descriptor string according to the given map.

Parameters: map a map between replaced and substituted JVM class names.

See Also: toJvmName

toArrayComponent

public static String toArrayComponent(String desc, int dim)
Returns the descriptor of the type of the array component. For example, if the given descriptor is "[[Ljava/lang/String;" and the given dimension is 2, then this method returns "Ljava/lang/String;".

Parameters: desc the descriptor. dim the array dimension.

toClassName

public static String toClassName(String descriptor)
Converts to a Java class name from a descriptor.

Parameters: descriptor type descriptor.

toCtClass

public static CtClass toCtClass(String desc, ClassPool cp)
Returns a 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;.

Parameters: desc descriptor cp the class pool used for obtaining a CtClass object.

toJavaName

public static String toJavaName(String classname)
Converts a class name from the internal representation used in the JVM to the normal one used in Java.

toJvmName

public static String toJvmName(String classname)
Converts a class name into the internal representation used in the JVM.

Note that toJvmName(toJvmName(s)) is equivalent to toJvmName(s).

toJvmName

public static String toJvmName(CtClass clazz)
Returns the internal representation of the class name in the JVM.

toString

public static String toString(String desc)
Returns a human-readable representation of the given descriptor. For example, 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-2006 Shigeru Chiba. All Rights Reserved.