diff options
author | Pekka Enberg <penberg@kernel.org> | 2011-09-11 11:20:38 +0300 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2012-03-12 10:55:56 +0200 |
commit | 5aa73921784d72c8c3119e52db897e6d779897e9 (patch) | |
tree | 00ec95e5182fbd7f910e347fa94fc05119911c0d /java | |
parent | 2dfd5525ea3daa519addbcda40b49f480e63bcc9 (diff) | |
download | classpath-indy.tar.gz |
Implement MethodType.toMethodDescriptorString()indy
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'java')
-rw-r--r-- | java/lang/invoke/MethodType.java | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/java/lang/invoke/MethodType.java b/java/lang/invoke/MethodType.java index 4d021c711..a4112f4b0 100644 --- a/java/lang/invoke/MethodType.java +++ b/java/lang/invoke/MethodType.java @@ -287,6 +287,45 @@ public final class MethodType public String toMethodDescriptorString() { - throw new UnsupportedOperationException(); + Iterator<Class<?>> itr = ptypes.iterator(); + CPStringBuilder r = new CPStringBuilder("("); + for (Class<?> ptype : ptypes) + { + appendClassDescriptor(r, ptype); + } + r.append(")"); + appendClassDescriptor(r, rtype); + return r.toString(); + } + + private static void appendClassDescriptor(CPStringBuilder r, Class<?> klass) + { + if (klass.isPrimitive()) + { + if (byte.class.equals(klass)) + r.append('B'); + else if (char.class.equals(klass)) + r.append('C'); + else if (double.class.equals(klass)) + r.append('D'); + else if (float.class.equals(klass)) + r.append('F'); + else if (int.class.equals(klass)) + r.append('I'); + else if (long.class.equals(klass)) + r.append('J'); + else if (short.class.equals(klass)) + r.append('S'); + else if (boolean.class.equals(klass)) + r.append('Z'); + else if (void.class.equals(klass)) + r.append('V'); + } + else + { + r.append('L'); + r.append(klass.getName().replace('.','/')); + r.append(';'); + } } } |