Package org.codehaus.janino
Class Descriptor
- java.lang.Object
-
- org.codehaus.janino.Descriptor
-
public final class Descriptor extends java.lang.ObjectHelper class that defines useful methods for handling "field descriptors" (JVMS 4.3.2) and "method descriptors" (JVMS 4.3.3).Typical descriptors are:
IInteger[IArray of integerLpkg1/pkg2/Clazz;ClassLpkg1/pkg2/Outer$Inner;Member class
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringBOOLEANThe field descriptor for the primitive type BOOLEAN.static java.lang.StringBYTEThe field descriptor for the primitive type BYTE.static java.lang.StringCHARThe field descriptor for the primitive type CHAR.private static java.util.Map<java.lang.String,java.lang.String>CLASS_NAME_TO_DESCRIPTORprivate static java.util.Map<java.lang.String,java.lang.String>DESCRIPTOR_TO_CLASSNAMEstatic java.lang.StringDOUBLEThe field descriptor for the primitive type DOUBLE.static java.lang.StringFLOATThe field descriptor for the primitive type FLOAT.static java.lang.StringINTThe field descriptor for the primitive type INT.static java.lang.StringJAVA_IO_SERIALIZABLEThe field descriptor for the interfaceSerializable.static java.lang.StringJAVA_LANG_ANNOTATION_RETENTIONThe field descriptor for the annotationRetention.static java.lang.StringJAVA_LANG_ASSERTIONERRORThe field descriptor for the classAssertionError.static java.lang.StringJAVA_LANG_BOOLEANThe field descriptor for the classBoolean.static java.lang.StringJAVA_LANG_BYTEThe field descriptor for the classByte.static java.lang.StringJAVA_LANG_CHARACTERThe field descriptor for the classCharacter.static java.lang.StringJAVA_LANG_CLASSThe field descriptor for the classClass.static java.lang.StringJAVA_LANG_CLONEABLEThe field descriptor for the interfaceCloneable.static java.lang.StringJAVA_LANG_DOUBLEThe field descriptor for the classDouble.static java.lang.StringJAVA_LANG_ENUMThe field descriptor for the classEnum.static java.lang.StringJAVA_LANG_ERRORThe field descriptor for the classError.static java.lang.StringJAVA_LANG_EXCEPTIONThe field descriptor for the classException.static java.lang.StringJAVA_LANG_FLOATThe field descriptor for the classFloat.static java.lang.StringJAVA_LANG_INTEGERThe field descriptor for the classInteger.static java.lang.StringJAVA_LANG_ITERABLEThe field descriptor for the interfaceIterable.static java.lang.StringJAVA_LANG_LONGThe field descriptor for the classLong.static java.lang.StringJAVA_LANG_OBJECTThe field descriptor for the classObject.static java.lang.StringJAVA_LANG_OVERRIDEThe field descriptor for the annotationOverride.static java.lang.StringJAVA_LANG_RUNTIMEEXCEPTIONThe field descriptor for the classRuntimeException.static java.lang.StringJAVA_LANG_SHORTThe field descriptor for the classShort.static java.lang.StringJAVA_LANG_STRINGThe field descriptor for the classString.static java.lang.StringJAVA_LANG_STRINGBUILDERThe field descriptor for the classStringBuilder.static java.lang.StringJAVA_LANG_SYSTEMThe field descriptor for the classSystem.static java.lang.StringJAVA_LANG_THROWABLEThe field descriptor for the classThrowable.static java.lang.StringJAVA_LANG_VOIDThe field descriptor for the classVoid.static java.lang.StringJAVA_UTIL_ITERATORThe field descriptor for the interfaceIterator.static java.lang.StringLONGThe field descriptor for the primitive type LONG.static java.lang.StringSHORTThe field descriptor for the primitive type SHORT.static java.lang.StringVOIDThe field descriptor for the typevoid.
-
Constructor Summary
Constructors Modifier Constructor Description privateDescriptor()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static booleanareInSamePackage(java.lang.String d1, java.lang.String d2)Checks whether two reference types are declared in the same package.static java.lang.StringfromClassName(java.lang.String className)Converts a class name as defined by "Class.getName()" into a descriptor.static java.lang.StringfromInternalForm(java.lang.String internalForm)Converts a class name in the "internal form" as described in JVMS 4.2 into a descriptor.static java.lang.StringgetComponentDescriptor(java.lang.String d)static java.lang.StringgetPackageName(java.lang.String d)Returns the package name of a class or interface reference descriptor, ornulliff the class or interface is declared in the default package.static booleanhasSize1(java.lang.String d)static booleanhasSize2(java.lang.String d)static booleanisArrayReference(java.lang.String d)static booleanisClassOrInterfaceReference(java.lang.String d)static booleanisPrimitive(java.lang.String d)static booleanisPrimitiveNumeric(java.lang.String d)static booleanisReference(java.lang.String d)static shortsize(java.lang.String d)static java.lang.StringtoClassName(java.lang.String d)Converts a field descriptor into a class name as defined byClass.getName().static java.lang.StringtoInternalForm(java.lang.String d)Converts a descriptor into the "internal form" as defined by JVMS 4.2.static java.lang.StringtoString(java.lang.String d)Pretty-prints the given descriptor.private static inttoString(java.lang.String d, int idx, java.lang.StringBuilder sb)
-
-
-
Field Detail
-
VOID
public static final java.lang.String VOID
The field descriptor for the typevoid.- See Also:
- Constant Field Values
-
BYTE
public static final java.lang.String BYTE
The field descriptor for the primitive type BYTE.- See Also:
- Constant Field Values
-
CHAR
public static final java.lang.String CHAR
The field descriptor for the primitive type CHAR.- See Also:
- Constant Field Values
-
DOUBLE
public static final java.lang.String DOUBLE
The field descriptor for the primitive type DOUBLE.- See Also:
- Constant Field Values
-
FLOAT
public static final java.lang.String FLOAT
The field descriptor for the primitive type FLOAT.- See Also:
- Constant Field Values
-
INT
public static final java.lang.String INT
The field descriptor for the primitive type INT.- See Also:
- Constant Field Values
-
LONG
public static final java.lang.String LONG
The field descriptor for the primitive type LONG.- See Also:
- Constant Field Values
-
SHORT
public static final java.lang.String SHORT
The field descriptor for the primitive type SHORT.- See Also:
- Constant Field Values
-
BOOLEAN
public static final java.lang.String BOOLEAN
The field descriptor for the primitive type BOOLEAN.- See Also:
- Constant Field Values
-
JAVA_LANG_ANNOTATION_RETENTION
public static final java.lang.String JAVA_LANG_ANNOTATION_RETENTION
The field descriptor for the annotationRetention.- See Also:
- Constant Field Values
-
JAVA_LANG_OVERRIDE
public static final java.lang.String JAVA_LANG_OVERRIDE
The field descriptor for the annotationOverride.- See Also:
- Constant Field Values
-
JAVA_LANG_ASSERTIONERROR
public static final java.lang.String JAVA_LANG_ASSERTIONERROR
The field descriptor for the classAssertionError.- See Also:
- Constant Field Values
-
JAVA_LANG_BOOLEAN
public static final java.lang.String JAVA_LANG_BOOLEAN
The field descriptor for the classBoolean.- See Also:
- Constant Field Values
-
JAVA_LANG_BYTE
public static final java.lang.String JAVA_LANG_BYTE
The field descriptor for the classByte.- See Also:
- Constant Field Values
-
JAVA_LANG_CHARACTER
public static final java.lang.String JAVA_LANG_CHARACTER
The field descriptor for the classCharacter.- See Also:
- Constant Field Values
-
JAVA_LANG_CLASS
public static final java.lang.String JAVA_LANG_CLASS
The field descriptor for the classClass.- See Also:
- Constant Field Values
-
JAVA_LANG_DOUBLE
public static final java.lang.String JAVA_LANG_DOUBLE
The field descriptor for the classDouble.- See Also:
- Constant Field Values
-
JAVA_LANG_ENUM
public static final java.lang.String JAVA_LANG_ENUM
The field descriptor for the classEnum.- See Also:
- Constant Field Values
-
JAVA_LANG_ERROR
public static final java.lang.String JAVA_LANG_ERROR
The field descriptor for the classError.- See Also:
- Constant Field Values
-
JAVA_LANG_EXCEPTION
public static final java.lang.String JAVA_LANG_EXCEPTION
The field descriptor for the classException.- See Also:
- Constant Field Values
-
JAVA_LANG_FLOAT
public static final java.lang.String JAVA_LANG_FLOAT
The field descriptor for the classFloat.- See Also:
- Constant Field Values
-
JAVA_LANG_INTEGER
public static final java.lang.String JAVA_LANG_INTEGER
The field descriptor for the classInteger.- See Also:
- Constant Field Values
-
JAVA_LANG_LONG
public static final java.lang.String JAVA_LANG_LONG
The field descriptor for the classLong.- See Also:
- Constant Field Values
-
JAVA_LANG_OBJECT
public static final java.lang.String JAVA_LANG_OBJECT
The field descriptor for the classObject.- See Also:
- Constant Field Values
-
JAVA_LANG_RUNTIMEEXCEPTION
public static final java.lang.String JAVA_LANG_RUNTIMEEXCEPTION
The field descriptor for the classRuntimeException.- See Also:
- Constant Field Values
-
JAVA_LANG_SHORT
public static final java.lang.String JAVA_LANG_SHORT
The field descriptor for the classShort.- See Also:
- Constant Field Values
-
JAVA_LANG_STRING
public static final java.lang.String JAVA_LANG_STRING
The field descriptor for the classString.- See Also:
- Constant Field Values
-
JAVA_LANG_STRINGBUILDER
public static final java.lang.String JAVA_LANG_STRINGBUILDER
The field descriptor for the classStringBuilder.- See Also:
- Constant Field Values
-
JAVA_LANG_SYSTEM
public static final java.lang.String JAVA_LANG_SYSTEM
The field descriptor for the classSystem.- See Also:
- Constant Field Values
-
JAVA_LANG_THROWABLE
public static final java.lang.String JAVA_LANG_THROWABLE
The field descriptor for the classThrowable.- See Also:
- Constant Field Values
-
JAVA_LANG_VOID
public static final java.lang.String JAVA_LANG_VOID
The field descriptor for the classVoid.- See Also:
- Constant Field Values
-
JAVA_IO_SERIALIZABLE
public static final java.lang.String JAVA_IO_SERIALIZABLE
The field descriptor for the interfaceSerializable.- See Also:
- Constant Field Values
-
JAVA_LANG_CLONEABLE
public static final java.lang.String JAVA_LANG_CLONEABLE
The field descriptor for the interfaceCloneable.- See Also:
- Constant Field Values
-
JAVA_LANG_ITERABLE
public static final java.lang.String JAVA_LANG_ITERABLE
The field descriptor for the interfaceIterable.- See Also:
- Constant Field Values
-
JAVA_UTIL_ITERATOR
public static final java.lang.String JAVA_UTIL_ITERATOR
The field descriptor for the interfaceIterator.- See Also:
- Constant Field Values
-
DESCRIPTOR_TO_CLASSNAME
private static final java.util.Map<java.lang.String,java.lang.String> DESCRIPTOR_TO_CLASSNAME
-
CLASS_NAME_TO_DESCRIPTOR
private static final java.util.Map<java.lang.String,java.lang.String> CLASS_NAME_TO_DESCRIPTOR
-
-
Method Detail
-
isReference
public static boolean isReference(java.lang.String d)
- Returns:
- Whether this
Descriptordescribes a reference (i.e. non-primitive) type
-
isClassOrInterfaceReference
public static boolean isClassOrInterfaceReference(java.lang.String d)
- Returns:
- Whether this
Descriptordescribes a class or an interface (and not an array or a primitive type)
-
isArrayReference
public static boolean isArrayReference(java.lang.String d)
- Returns:
- Whether this
Descriptordescribes an array type
-
getComponentDescriptor
public static java.lang.String getComponentDescriptor(java.lang.String d)
- Returns:
- The descriptor of the component of the array type d
- Throws:
InternalCompilerException- d does not describe an array type
-
size
public static short size(java.lang.String d)
- Returns:
- The number of slots (1 or two) that a value of the type described by d occupies on the operand stack or in the local variable array, or 0 iff d describes the type VOID
-
hasSize1
public static boolean hasSize1(java.lang.String d)
- Returns:
trueiff d describes a primitive type except LONG and DOUBLE, or a reference type
-
hasSize2
public static boolean hasSize2(java.lang.String d)
- Returns:
trueiff d LONG or DOUBLE
-
toString
public static java.lang.String toString(java.lang.String d)
Pretty-prints the given descriptor.- Parameters:
d- A valid field or method descriptor
-
toString
private static int toString(java.lang.String d, int idx, java.lang.StringBuilder sb)
-
fromClassName
public static java.lang.String fromClassName(java.lang.String className)
Converts a class name as defined by "Class.getName()" into a descriptor.
-
fromInternalForm
public static java.lang.String fromInternalForm(java.lang.String internalForm)
Converts a class name in the "internal form" as described in JVMS 4.2 into a descriptor.Also implements the encoding of array types as described in JVMS 4.4.1.
-
toClassName
public static java.lang.String toClassName(java.lang.String d)
Converts a field descriptor into a class name as defined byClass.getName().
-
toInternalForm
public static java.lang.String toInternalForm(java.lang.String d)
Converts a descriptor into the "internal form" as defined by JVMS 4.2.
-
isPrimitive
public static boolean isPrimitive(java.lang.String d)
- Returns:
- Whether d describes a primitive type or VOID
-
isPrimitiveNumeric
public static boolean isPrimitiveNumeric(java.lang.String d)
- Returns:
- Whether d describes a primitive type except
booleanandvoid
-
getPackageName
@Nullable public static java.lang.String getPackageName(java.lang.String d)
Returns the package name of a class or interface reference descriptor, ornulliff the class or interface is declared in the default package.
-
areInSamePackage
public static boolean areInSamePackage(java.lang.String d1, java.lang.String d2)Checks whether two reference types are declared in the same package.
-
-