Package org.apache.bcel.generic
Class Type
- java.lang.Object
-
- org.apache.bcel.generic.Type
-
- Direct Known Subclasses:
BasicType,DOUBLE_Upper,LONG_Upper,ReferenceType,ReturnaddressType
public abstract class Type extends java.lang.ObjectAbstract super class for all possible Java types, namely basic types such as int, object types like String and array types, e.g. int[]
-
-
Field Summary
Fields Modifier and Type Field Description static BasicTypeBOOLEANstatic BasicTypeBYTEstatic BasicTypeCHARstatic ObjectTypeCLASSprivate static java.lang.ThreadLocal<java.lang.Integer>CONSUMED_CHARSstatic BasicTypeDOUBLEstatic BasicTypeFLOATstatic BasicTypeINTstatic BasicTypeLONGstatic Type[]NO_ARGSEmpty array.static ReferenceTypeNULLstatic ObjectTypeOBJECTstatic BasicTypeSHORTprotected java.lang.StringsignatureDeprecated.(since 6.0) will be made private; do not access directly, use getter/setterstatic ObjectTypeSTRINGstatic ObjectTypeSTRINGBUFFERstatic ObjectTypeTHROWABLEprotected bytetypeDeprecated.(since 6.0) will be made private; do not access directly, use getter/setterstatic TypeUNKNOWNstatic BasicTypeVOIDPredefined constants
-
Constructor Summary
Constructors Modifier Constructor Description protectedType(byte type, java.lang.String signature)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static intconsumed(int coded)(package private) static intencode(int size, int consumed)booleanequals(java.lang.Object o)static Type[]getArgumentTypes(java.lang.String signature)Convert arguments of a method (signature) to an array of Type objects.(package private) static intgetArgumentTypesSize(java.lang.String signature)java.lang.StringgetClassName()static java.lang.StringgetMethodSignature(Type returnType, Type[] argTypes)Convert type to Java method signature, e.g.static TypegetReturnType(java.lang.String signature)Convert return value of a method (signature) to a Type object.(package private) static intgetReturnTypeSize(java.lang.String signature)java.lang.StringgetSignature()static java.lang.StringgetSignature(java.lang.reflect.Method meth)intgetSize()bytegetType()static TypegetType(java.lang.Class<?> cls)Convert runtimeClassto BCEL Type object.static TypegetType(java.lang.String signature)Convert signature to a Type object.static Type[]getTypes(java.lang.Class<?>[] classes)Convert runtimejava.lang.Class[]to BCEL Type objects.(package private) static intgetTypeSize(java.lang.String signature)inthashCode()(package private) static java.lang.StringinternalTypeNameToSignature(java.lang.String internalTypeName)TypenormalizeForStackOrLocal()boolean, short and char variable are considered as int in the stack or local variable area.(package private) static intsize(int coded)java.lang.StringtoString()private static intunwrap(java.lang.ThreadLocal<java.lang.Integer> tl)private static voidwrap(java.lang.ThreadLocal<java.lang.Integer> tl, int value)
-
-
-
Field Detail
-
VOID
public static final BasicType VOID
Predefined constants
-
BOOLEAN
public static final BasicType BOOLEAN
-
INT
public static final BasicType INT
-
SHORT
public static final BasicType SHORT
-
BYTE
public static final BasicType BYTE
-
LONG
public static final BasicType LONG
-
DOUBLE
public static final BasicType DOUBLE
-
FLOAT
public static final BasicType FLOAT
-
CHAR
public static final BasicType CHAR
-
OBJECT
public static final ObjectType OBJECT
-
CLASS
public static final ObjectType CLASS
-
STRING
public static final ObjectType STRING
-
STRINGBUFFER
public static final ObjectType STRINGBUFFER
-
THROWABLE
public static final ObjectType THROWABLE
-
NO_ARGS
public static final Type[] NO_ARGS
Empty array.
-
NULL
public static final ReferenceType NULL
-
UNKNOWN
public static final Type UNKNOWN
-
CONSUMED_CHARS
private static final java.lang.ThreadLocal<java.lang.Integer> CONSUMED_CHARS
-
type
@Deprecated protected byte type
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
signature
@Deprecated protected java.lang.String signature
Deprecated.(since 6.0) will be made private; do not access directly, use getter/setter
-
-
Method Detail
-
consumed
static int consumed(int coded)
-
encode
static int encode(int size, int consumed)
-
getArgumentTypes
public static Type[] getArgumentTypes(java.lang.String signature)
Convert arguments of a method (signature) to an array of Type objects.- Parameters:
signature- signature string such as (Ljava/lang/String;)V- Returns:
- array of argument types
-
getArgumentTypesSize
static int getArgumentTypesSize(java.lang.String signature)
-
getMethodSignature
public static java.lang.String getMethodSignature(Type returnType, Type[] argTypes)
Convert type to Java method signature, e.g. int[] f(java.lang.String x) becomes (Ljava/lang/String;)[I- Parameters:
returnType- what the method returnsargTypes- what are the argument types- Returns:
- method signature for given type(s).
-
getReturnType
public static Type getReturnType(java.lang.String signature)
Convert return value of a method (signature) to a Type object.- Parameters:
signature- signature string such as (Ljava/lang/String;)V- Returns:
- return type
-
getReturnTypeSize
static int getReturnTypeSize(java.lang.String signature)
-
getSignature
public static java.lang.String getSignature(java.lang.reflect.Method meth)
-
getType
public static Type getType(java.lang.Class<?> cls)
Convert runtimeClassto BCEL Type object.- Parameters:
cls- Java class- Returns:
- corresponding Type object
-
getType
public static Type getType(java.lang.String signature) throws java.lang.StringIndexOutOfBoundsException
Convert signature to a Type object.- Parameters:
signature- signature string such as Ljava/lang/String;- Returns:
- type object
- Throws:
java.lang.StringIndexOutOfBoundsException
-
getTypes
public static Type[] getTypes(java.lang.Class<?>[] classes)
Convert runtimejava.lang.Class[]to BCEL Type objects.- Parameters:
classes- an array of runtime class objects- Returns:
- array of corresponding Type objects
-
getTypeSize
static int getTypeSize(java.lang.String signature) throws java.lang.StringIndexOutOfBoundsException- Throws:
java.lang.StringIndexOutOfBoundsException
-
internalTypeNameToSignature
static java.lang.String internalTypeNameToSignature(java.lang.String internalTypeName)
-
size
static int size(int coded)
-
unwrap
private static int unwrap(java.lang.ThreadLocal<java.lang.Integer> tl)
-
wrap
private static void wrap(java.lang.ThreadLocal<java.lang.Integer> tl, int value)
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object- Returns:
- whether the Types are equal
-
getClassName
public java.lang.String getClassName()
-
getSignature
public java.lang.String getSignature()
- Returns:
- signature for given type.
-
getSize
public int getSize()
- Returns:
- stack size of this type (2 for long and double, 0 for void, 1 otherwise)
-
getType
public byte getType()
- Returns:
- type as defined in Constants
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object- Returns:
- hash code of Type
-
normalizeForStackOrLocal
public Type normalizeForStackOrLocal()
boolean, short and char variable are considered as int in the stack or local variable area. ReturnsINTforBOOLEAN,SHORTorCHAR, otherwise returns the given type.- Since:
- 6.0
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object- Returns:
- Type string, e.g. 'int[]'
-
-