> Hi !
> I'm dumb on simple question. How can I get method's signature in my
[quoted text clipped - 10 lines]
>
> --dima
If you have easy access the bytecode, the program `javap' can print out
the signature for the method (foo(II)V).
Barring that, it is pretty easy to transform a
java.lang.reflect.Method's toString() to a JVM internal String.

Signature
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth
> I'm dumb on simple question. How can I get method's signature in my
> java program in "JVM notation" ?
[quoted text clipped - 4 lines]
> I would like to get string .../A/foo(II)V for method 'foo' . I haven't
> found any appropriate methods to do it.
I believe that this information is not available in the standard Java
API. Haven't followed late changes though..
To get this info, I'm using the Apache BCEL library
(http://jakarta.apache.org/bcel/):
$ cat SignatureLister.java
import java.io.*;
import org.apache.bcel.*;
import org.apache.bcel.classfile.*;
import org.apache.bcel.generic.*;
import org.apache.bcel.util.*;
public class SignatureLister {
public static void main(String args[]) throws IOException {
ClassParser parser = new ClassParser(args[0]);
JavaClass clazz = parser.parse();
Method[] methods = clazz.getMethods();
for(int i=0; i<methods.length; i++) {
System.out.print(clazz.getClassName());
System.out.print(".");
System.out.print(methods[i].getName());
System.out.println(methods[i].getSignature());
}
}
}
$ javac -classpath bcel-5.2.jar SignatureLister.java
$ $ java -cp bcel-5.2.jar:. SignatureLister A.class
A.<init>()V
A.foo(II)V
br,
Pietu
Dmitry Marienko - 23 Nov 2007 13:11 GMT
Hi !
Thanks, Joshua and Pietu,
Unfortunately, I'm restricted in using any extern packages in this
project, so I have written simple class for translation method's signature
from general notation to jvm.
>> I'm dumb on simple question. How can I get method's signature in my
>> java program in "JVM notation" ?
[quoted text clipped - 40 lines]
> A.<init>()V
> A.foo(II)V
--dima