diff options
| author | Michael Koch <konqueror@gmx.de> | 2004-10-16 08:06:14 +0000 |
|---|---|---|
| committer | Michael Koch <konqueror@gmx.de> | 2004-10-16 08:06:14 +0000 |
| commit | 05252fa764661fa935318ea18dd052e69b2e97ad (patch) | |
| tree | f7750d0c1c4c56bceae4748cb9e17f061004b420 /vm/reference/java/lang/reflect | |
| parent | a869231c6569632423ae552029fa7d2e8691d320 (diff) | |
| download | classpath-05252fa764661fa935318ea18dd052e69b2e97ad.tar.gz | |
2004-10-16 Michael Koch <konqueror@gmx.de>
* vm/reference/java/lang/reflect/Method.java
(toString): Fix names of arguments.
(getUserTypeName): New Method.
Diffstat (limited to 'vm/reference/java/lang/reflect')
| -rw-r--r-- | vm/reference/java/lang/reflect/Method.java | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/vm/reference/java/lang/reflect/Method.java b/vm/reference/java/lang/reflect/Method.java index 8117b2290..693c31c9f 100644 --- a/vm/reference/java/lang/reflect/Method.java +++ b/vm/reference/java/lang/reflect/Method.java @@ -212,15 +212,15 @@ extends AccessibleObject implements Member // 128 is a reasonable buffer initial size for constructor StringBuffer sb = new StringBuffer(128); Modifier.toString(getModifiers(), sb).append(' '); - sb.append(getReturnType().getName()).append(' '); + sb.append(getUserTypeName(getReturnType().getName())).append(' '); sb.append(getDeclaringClass().getName()).append('.'); sb.append(getName()).append('('); Class[] c = getParameterTypes(); if (c.length > 0) { - sb.append(c[0].getName()); + sb.append(getUserTypeName(c[0].getName())); for (int i = 1; i < c.length; i++) - sb.append(',').append(c[i].getName()); + sb.append(',').append(getUserTypeName(c[i].getName())); } sb.append(')'); c = getExceptionTypes(); @@ -233,6 +233,55 @@ extends AccessibleObject implements Member return sb.toString(); } + private static String getUserTypeName(String typeSpec) + { + int pos = 0; + String typeName = ""; + String arrayPart = ""; + + while (typeSpec.charAt(pos) == '[') + { + arrayPart += "[]"; + ++pos; + } + + switch (typeSpec.charAt(pos)) + { + case 'Z': + typeName = "boolean"; + break; + case 'B': + typeName = "byte"; + break; + case 'C': + typeName = "char"; + break; + case 'D': + typeName = "double"; + break; + case 'F': + typeName = "float"; + break; + case 'I': + typeName = "int"; + break; + case 'J': + typeName = "long"; + break; + case 'S': + typeName = "short"; + break; + case 'L': + typeName = typeSpec.substring(pos + 1, typeSpec.length() - 1); + break; + default: + typeName = typeSpec; + break; + } + + return typeName + arrayPart; + } + /** * Invoke the method. Arguments are automatically unwrapped and widened, * and the result is automatically wrapped, if needed.<p> |
