summaryrefslogtreecommitdiff
path: root/vm/reference/java/lang/reflect
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-10-16 08:06:14 +0000
committerMichael Koch <konqueror@gmx.de>2004-10-16 08:06:14 +0000
commit05252fa764661fa935318ea18dd052e69b2e97ad (patch)
treef7750d0c1c4c56bceae4748cb9e17f061004b420 /vm/reference/java/lang/reflect
parenta869231c6569632423ae552029fa7d2e8691d320 (diff)
downloadclasspath-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.java55
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>