Package org.codehaus.janino
Class Descriptor
- java.lang.Object
-
- org.codehaus.janino.Descriptor
-
public final class Descriptor extends java.lang.Object
Helper class that defines useful methods for handling "field descriptors" (JVMS 4.3.2) and "method descriptors" (JVMS 4.3.3).Typical descriptors are:
I
Integer[I
Array of integerLpkg1/pkg2/Clazz;
ClassLpkg1/pkg2/Outer$Inner;
Member class
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
BOOLEAN
The field descriptor for the primitive type BOOLEAN.static java.lang.String
BYTE
The field descriptor for the primitive type BYTE.static java.lang.String
CHAR
The field descriptor for the primitive type CHAR.static java.lang.String
DOUBLE
The field descriptor for the primitive type DOUBLE.static java.lang.String
FLOAT
The field descriptor for the primitive type FLOAT.static java.lang.String
INT
The field descriptor for the primitive type INT.static java.lang.String
JAVA_IO_SERIALIZABLE
The field descriptor for the interfaceSerializable
.static java.lang.String
JAVA_LANG_ANNOTATION_RETENTION
The field descriptor for the annotationRetention
.static java.lang.String
JAVA_LANG_ASSERTIONERROR
The field descriptor for the classAssertionError
.static java.lang.String
JAVA_LANG_BOOLEAN
The field descriptor for the classBoolean
.static java.lang.String
JAVA_LANG_BYTE
The field descriptor for the classByte
.static java.lang.String
JAVA_LANG_CHARACTER
The field descriptor for the classCharacter
.static java.lang.String
JAVA_LANG_CLASS
The field descriptor for the classClass
.static java.lang.String
JAVA_LANG_CLONEABLE
The field descriptor for the interfaceCloneable
.static java.lang.String
JAVA_LANG_DOUBLE
The field descriptor for the classDouble
.static java.lang.String
JAVA_LANG_ENUM
The field descriptor for the classEnum
.static java.lang.String
JAVA_LANG_ERROR
The field descriptor for the classError
.static java.lang.String
JAVA_LANG_EXCEPTION
The field descriptor for the classException
.static java.lang.String
JAVA_LANG_FLOAT
The field descriptor for the classFloat
.static java.lang.String
JAVA_LANG_INTEGER
The field descriptor for the classInteger
.static java.lang.String
JAVA_LANG_ITERABLE
The field descriptor for the interfaceIterable
.static java.lang.String
JAVA_LANG_LONG
The field descriptor for the classLong
.static java.lang.String
JAVA_LANG_OBJECT
The field descriptor for the classObject
.static java.lang.String
JAVA_LANG_OVERRIDE
The field descriptor for the annotationOverride
.static java.lang.String
JAVA_LANG_RUNTIMEEXCEPTION
The field descriptor for the classRuntimeException
.static java.lang.String
JAVA_LANG_SHORT
The field descriptor for the classShort
.static java.lang.String
JAVA_LANG_STRING
The field descriptor for the classString
.static java.lang.String
JAVA_LANG_STRINGBUILDER
The field descriptor for the classStringBuilder
.static java.lang.String
JAVA_LANG_SYSTEM
The field descriptor for the classSystem
.static java.lang.String
JAVA_LANG_THROWABLE
The field descriptor for the classThrowable
.static java.lang.String
JAVA_LANG_VOID
The field descriptor for the classVoid
.static java.lang.String
JAVA_UTIL_ITERATOR
The field descriptor for the interfaceIterator
.static java.lang.String
LONG
The field descriptor for the primitive type LONG.static java.lang.String
SHORT
The field descriptor for the primitive type SHORT.static java.lang.String
VOID
The field descriptor for the typevoid
.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static boolean
areInSamePackage(java.lang.String d1, java.lang.String d2)
Checks whether two reference types are declared in the same package.static java.lang.String
fromClassName(java.lang.String className)
Converts a class name as defined by "Class.getName()" into a descriptor.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.static java.lang.String
getComponentDescriptor(java.lang.String d)
static java.lang.String
getPackageName(java.lang.String d)
Returns the package name of a class or interface reference descriptor, ornull
iff the class or interface is declared in the default package.static boolean
hasSize1(java.lang.String d)
static boolean
hasSize2(java.lang.String d)
static boolean
isArrayReference(java.lang.String d)
static boolean
isClassOrInterfaceReference(java.lang.String d)
static boolean
isPrimitive(java.lang.String d)
static boolean
isPrimitiveNumeric(java.lang.String d)
static boolean
isReference(java.lang.String d)
static short
size(java.lang.String d)
static java.lang.String
toClassName(java.lang.String d)
Converts a field descriptor into a class name as defined byClass.getName()
.static java.lang.String
toInternalForm(java.lang.String d)
Converts a descriptor into the "internal form" as defined by JVMS 4.2.static java.lang.String
toString(java.lang.String d)
Pretty-prints the given descriptor.
-
-
-
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
-
-
Method Detail
-
isReference
public static boolean isReference(java.lang.String d)
- Returns:
- Whether this
Descriptor
describes a reference (i.e. non-primitive) type
-
isClassOrInterfaceReference
public static boolean isClassOrInterfaceReference(java.lang.String d)
- Returns:
- Whether this
Descriptor
describes 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
Descriptor
describes 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:
true
iff d describes a primitive type except LONG and DOUBLE, or a reference type
-
hasSize2
public static boolean hasSize2(java.lang.String d)
- Returns:
true
iff 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
-
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
boolean
andvoid
-
getPackageName
@Nullable public static java.lang.String getPackageName(java.lang.String d)
Returns the package name of a class or interface reference descriptor, ornull
iff 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.
-
-