|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.eclipse.jdt.core.Signature
Provides methods for encoding and decoding type and method signature strings.
The syntax for a type signature is:
typeSignature ::= "B" // byte | "C" // char | "D" // double | "F" // float | "I" // int | "J" // long | "S" // short | "V" // void | "Z" // boolean | "L" + binaryTypeName + ";" // resolved named type (i.e., in compiled code) | "Q" + sourceTypeName + ";" // unresolved named type (i.e., in source code) | "[" + typeSignature // array of type denoted by typeSignature
Examples:
"[[I"
denotes int[][]
"Ljava.lang.String;"
denotes java.lang.String
in compiled code"QString"
denotes String
in source code"Qjava.lang.String"
denotes java.lang.String
in source code"[QString"
denotes String[]
in source codeThe syntax for a method signature is:
methodSignature ::= "(" + paramTypeSignature* + ")" + returnTypeSignature paramTypeSignature ::= typeSignature returnTypeSignature ::= typeSignature
Examples:
"()I"
denotes int foo()
"([Ljava.lang.String;)V"
denotes void foo(java.lang.String[])
in compiled code"(QString;)QObject;"
denotes Object foo(String)
in source codeThis class provides static methods and constants only; it is not intended to be instantiated or subclassed by clients.
Field Summary | |
static char |
C_ARRAY
Character constant indicating an array type in a signature. |
static char |
C_BOOLEAN
Character constant indicating the primitive type boolean in a signature. |
static char |
C_BYTE
Character constant indicating the primitive type byte in a signature. |
static char |
C_CHAR
Character constant indicating the primitive type char in a signature. |
static char |
C_DOLLAR
Character constant indicating the dollar in a signature. |
static char |
C_DOT
Character constant indicating the dot in a signature. |
static char |
C_DOUBLE
Character constant indicating the primitive type double in a signature. |
static char |
C_FLOAT
Character constant indicating the primitive type float in a signature. |
static char |
C_INT
Character constant indicating the primitive type int in a signature. |
static char |
C_LONG
Character constant indicating the primitive type long in a signature. |
static char |
C_NAME_END
Character constant indicating the end of a named type in a signature. |
static char |
C_PARAM_END
Character constant indicating the end of a parameter type list in a signature. |
static char |
C_PARAM_START
Character constant indicating the start of a parameter type list in a signature. |
static char |
C_RESOLVED
Character constant indicating the start of a resolved, named type in a signature. |
static char |
C_SEMICOLON
Character constant indicating the semicolon in a signature. |
static char |
C_SHORT
Character constant indicating the primitive type short in a signature. |
static char |
C_UNRESOLVED
Character constant indicating the start of an unresolved, named type in a signature. |
static char |
C_VOID
Character constant indicating result type void in a signature. |
static String |
SIG_BOOLEAN
String constant for the signature of the primitive type boolean. |
static String |
SIG_BYTE
String constant for the signature of the primitive type byte. |
static String |
SIG_CHAR
String constant for the signature of the primitive type char. |
static String |
SIG_DOUBLE
String constant for the signature of the primitive type double. |
static String |
SIG_FLOAT
String constant for the signature of the primitive type float. |
static String |
SIG_INT
String constant for the signature of the primitive type int. |
static String |
SIG_LONG
String constant for the signature of the primitive type long. |
static String |
SIG_SHORT
String constant for the signature of the primitive type short. |
static String |
SIG_VOID
String constant for the signature of result type void. |
Method Summary | |
static char[] |
createArraySignature(char[] typeSignature,
int arrayCount)
Creates a new type signature with the given amount of array nesting added to the given type signature. |
static String |
createArraySignature(String typeSignature,
int arrayCount)
Creates a new type signature with the given amount of array nesting added to the given type signature. |
static char[] |
createCharArrayTypeSignature(char[] typeName,
boolean isResolved)
Creates a new type signature from the given type name encoded as a character array. |
static char[] |
createMethodSignature(char[][] parameterTypes,
char[] returnType)
Creates a method signature from the given parameter and return type signatures. |
static String |
createMethodSignature(String[] parameterTypes,
String returnType)
Creates a method signature from the given parameter and return type signatures. |
static String |
createTypeSignature(char[] typeName,
boolean isResolved)
Creates a new type signature from the given type name encoded as a character array. |
static String |
createTypeSignature(String typeName,
boolean isResolved)
Creates a new type signature from the given type name. |
static int |
getArrayCount(char[] typeSignature)
Returns the array count (array nesting depth) of the given type signature. |
static int |
getArrayCount(String typeSignature)
Returns the array count (array nesting depth) of the given type signature. |
static char[] |
getElementType(char[] typeSignature)
Returns the type signature without any array nesting. |
static String |
getElementType(String typeSignature)
Returns the type signature without any array nesting. |
static int |
getParameterCount(char[] methodSignature)
Returns the number of parameter types in the given method signature. |
static int |
getParameterCount(String methodSignature)
Returns the number of parameter types in the given method signature. |
static char[][] |
getParameterTypes(char[] methodSignature)
Extracts the parameter type signatures from the given method signature. |
static String[] |
getParameterTypes(String methodSignature)
Extracts the parameter type signatures from the given method signature. |
static char[] |
getQualifier(char[] name)
Returns a char array containing all but the last segment of the given dot-separated qualified name. |
static String |
getQualifier(String name)
Returns a string containing all but the last segment of the given dot-separated qualified name. |
static char[] |
getReturnType(char[] methodSignature)
Extracts the return type from the given method signature. |
static String |
getReturnType(String methodSignature)
Extracts the return type from the given method signature. |
static char[] |
getSimpleName(char[] name)
Returns the last segment of the given dot-separated qualified name. |
static String |
getSimpleName(String name)
Returns the last segment of the given dot-separated qualified name. |
static char[][] |
getSimpleNames(char[] name)
Returns all segments of the given dot-separated qualified name. |
static String[] |
getSimpleNames(String name)
Returns all segments of the given dot-separated qualified name. |
static char[] |
toCharArray(char[] signature)
Converts the given type signature to a readable string. |
static char[] |
toCharArray(char[] methodSignature,
char[] methodName,
char[][] parameterNames,
boolean fullyQualifyTypeNames,
boolean includeReturnType)
Converts the given method signature to a readable form. |
static char[] |
toQualifiedName(char[][] segments)
Converts the given array of qualified name segments to a qualified name. |
static String |
toQualifiedName(String[] segments)
Converts the given array of qualified name segments to a qualified name. |
static String |
toString(String signature)
Converts the given type signature to a readable string. |
static String |
toString(String methodSignature,
String methodName,
String[] parameterNames,
boolean fullyQualifyTypeNames,
boolean includeReturnType)
Converts the given method signature to a readable string. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final char C_BOOLEAN
'Z'
.
public static final char C_BYTE
'B'
.
public static final char C_CHAR
'C'
.
public static final char C_DOUBLE
'D'
.
public static final char C_FLOAT
'F'
.
public static final char C_INT
'I'
.
public static final char C_SEMICOLON
';'
.
public static final char C_LONG
'J'
.
public static final char C_SHORT
'S'
.
public static final char C_VOID
'V'
.
public static final char C_DOT
'.'
.
public static final char C_DOLLAR
'$'
.
public static final char C_ARRAY
'['
.
public static final char C_RESOLVED
'L'
.
public static final char C_UNRESOLVED
'Q'
.
public static final char C_NAME_END
';'
.
public static final char C_PARAM_START
'('
.
public static final char C_PARAM_END
')'
.
public static final String SIG_BOOLEAN
"Z"
.
public static final String SIG_BYTE
"B"
.
public static final String SIG_CHAR
"C"
.
public static final String SIG_DOUBLE
"D"
.
public static final String SIG_FLOAT
"F"
.
public static final String SIG_INT
"I"
.
public static final String SIG_LONG
"J"
.
public static final String SIG_SHORT
"S"
.
public static final String SIG_VOID
"V"
.
Method Detail |
public static char[] createArraySignature(char[] typeSignature, int arrayCount)
typeSignature
- the type signaturearrayCount
- the desired number of levels of array nesting
public static String createArraySignature(String typeSignature, int arrayCount)
typeSignature
- the type signaturearrayCount
- the desired number of levels of array nesting
public static char[] createMethodSignature(char[][] parameterTypes, char[] returnType)
parameterTypes
- the list of parameter type signaturesreturnType
- the return type signature
public static String createMethodSignature(String[] parameterTypes, String returnType)
parameterTypes
- the list of parameter type signaturesreturnType
- the return type signature
public static String createTypeSignature(char[] typeName, boolean isResolved)
createTypeSignature(new String(typeName),isResolved)
, although
more efficient for callers with character arrays rather than strings. If the
type name is qualified, then it is expected to be dot-based.
typeName
- the possibly qualified type nameisResolved
- true
if the type name is to be considered
resolved (for example, a type name from a binary class file), and
false
if the type name is to be considered unresolved
(for example, a type name found in source code)
createTypeSignature(java.lang.String,boolean)
public static char[] createCharArrayTypeSignature(char[] typeName, boolean isResolved)
createTypeSignature(new String(typeName),isResolved).toCharArray()
, although
more efficient for callers with character arrays rather than strings. If the
type name is qualified, then it is expected to be dot-based.
typeName
- the possibly qualified type nameisResolved
- true
if the type name is to be considered
resolved (for example, a type name from a binary class file), and
false
if the type name is to be considered unresolved
(for example, a type name found in source code)
createTypeSignature(java.lang.String,boolean)
public static String createTypeSignature(String typeName, boolean isResolved)
For example:
createTypeSignature("int", hucairz) -> "I"
createTypeSignature("java.lang.String", true) -> "Ljava.lang.String;"
createTypeSignature("String", false) -> "QString;"
createTypeSignature("java.lang.String", false) -> "Qjava.lang.String;"
createTypeSignature("int []", false) -> "[I"
typeName
- the possibly qualified type nameisResolved
- true
if the type name is to be considered
resolved (for example, a type name from a binary class file), and
false
if the type name is to be considered unresolved
(for example, a type name found in source code)
public static int getArrayCount(char[] typeSignature) throws IllegalArgumentException
typeSignature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static int getArrayCount(String typeSignature) throws IllegalArgumentException
typeSignature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static char[] getElementType(char[] typeSignature) throws IllegalArgumentException
For example:
getElementType({'[', '[', 'I'}) --> {'I'}.
typeSignature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static String getElementType(String typeSignature) throws IllegalArgumentException
For example:
getElementType("[[I") --> "I".
typeSignature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static int getParameterCount(char[] methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static int getParameterCount(String methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static char[][] getParameterTypes(char[] methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is syntactically
incorrectpublic static String[] getParameterTypes(String methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is syntactically
incorrectpublic static char[] getQualifier(char[] name)
For example:
getQualifier({'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'O', 'b', 'j', 'e', 'c', 't'}) -> {'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g'}
getQualifier({'O', 'u', 't', 'e', 'r', '.', 'I', 'n', 'n', 'e', 'r'}) -> {'O', 'u', 't', 'e', 'r'}
name
- the name
public static String getQualifier(String name)
For example:
getQualifier("java.lang.Object") -> "java.lang"
getQualifier("Outer.Inner") -> "Outer"
name
- the name
public static char[] getReturnType(char[] methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is syntactically
incorrectpublic static String getReturnType(String methodSignature) throws IllegalArgumentException
methodSignature
- the method signature
IllegalArgumentException
- if the signature is syntactically
incorrectpublic static char[] getSimpleName(char[] name)
For example:
getSimpleName({'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'O', 'b', 'j', 'e', 'c', 't'}) -> {'O', 'b', 'j', 'e', 'c', 't'}
name
- the name
public static String getSimpleName(String name)
For example:
getSimpleName("java.lang.Object") -> "Object"
name
- the name
public static char[][] getSimpleNames(char[] name)
For example:
getSimpleNames({'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'O', 'b', 'j', 'e', 'c', 't'}) -> {{'j', 'a', 'v', 'a'}, {'l', 'a', 'n', 'g'}, {'O', 'b', 'j', 'e', 'c', 't'}}
getSimpleNames({'O', 'b', 'j', 'e', 'c', 't'}) -> {{'O', 'b', 'j', 'e', 'c', 't'}}
getSimpleNames("") -> {}
name
- the name
public static String[] getSimpleNames(String name)
For example:
getSimpleNames("java.lang.Object") -> {"java", "lang", "Object"}
getSimpleNames("Object") -> {"Object"}
getSimpleNames("") -> {}
name
- the name
public static char[] toCharArray(char[] methodSignature, char[] methodName, char[][] parameterNames, boolean fullyQualifyTypeNames, boolean includeReturnType)
For example:
toString("([Ljava.lang.String;)V", "main", new String[] {"args"}, false, true) -> "void main(String[] args)"
methodSignature
- the method signature to convertmethodName
- the name of the method to insert in the result, or
null
if no method name is to be includedparameterNames
- the parameter names to insert in the result, or
null
if no parameter names are to be included; if supplied,
the number of parameter names must match that of the method signaturefullyQualifyTypeNames
- true
if type names should be fully
qualified, and false
to use only simple namesincludeReturnType
- true
if the return type is to be
included
public static char[] toCharArray(char[] signature) throws IllegalArgumentException
For example:
toString({'[', 'L', 'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'S', 't', 'r', 'i', 'n', 'g', ';'}) -> {'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'S', 't', 'r', 'i', 'n', 'g', '[', ']'}
toString({'I'}) -> {'i', 'n', 't'}
Note: This method assumes that a type signature containing a '$'
is an inner type signature. While this is correct in most cases, someone could
define a non-inner type name containing a '$'
. Handling this
correctly in all cases would have required resolving the signature, which
generally not feasible.
signature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static char[] toQualifiedName(char[][] segments)
For example:
toQualifiedName({{'j', 'a', 'v', 'a'}, {'l', 'a', 'n', 'g'}, {'O', 'b', 'j', 'e', 'c', 't'}}) -> {'j', 'a', 'v', 'a', '.', 'l', 'a', 'n', 'g', '.', 'O', 'b', 'j', 'e', 'c', 't'}
toQualifiedName({{'O', 'b', 'j', 'e', 'c', 't'}}) -> {'O', 'b', 'j', 'e', 'c', 't'}
toQualifiedName({{}}) -> {}
segments
- the list of name segments, possibly empty
public static String toQualifiedName(String[] segments)
For example:
toQualifiedName(new String[] {"java", "lang", "Object"}) -> "java.lang.Object"
toQualifiedName(new String[] {"Object"}) -> "Object"
toQualifiedName(new String[0]) -> ""
segments
- the list of name segments, possibly empty
public static String toString(String signature) throws IllegalArgumentException
For example:
toString("[Ljava.lang.String;") -> "java.lang.String[]"
toString("I") -> "int"
Note: This method assumes that a type signature containing a '$'
is an inner type signature. While this is correct in most cases, someone could
define a non-inner type name containing a '$'
. Handling this
correctly in all cases would have required resolving the signature, which
generally not feasible.
signature
- the type signature
IllegalArgumentException
- if the signature is not syntactically
correctpublic static String toString(String methodSignature, String methodName, String[] parameterNames, boolean fullyQualifyTypeNames, boolean includeReturnType)
For example:
toString("([Ljava.lang.String;)V", "main", new String[] {"args"}, false, true) -> "void main(String[] args)"
methodSignature
- the method signature to convertmethodName
- the name of the method to insert in the result, or
null
if no method name is to be includedparameterNames
- the parameter names to insert in the result, or
null
if no parameter names are to be included; if supplied,
the number of parameter names must match that of the method signaturefullyQualifyTypeNames
- true
if type names should be fully
qualified, and false
to use only simple namesincludeReturnType
- true
if the return type is to be
included
|
Eclipse JDT 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |