by "Dmitry Marienko" <dima@[EMAIL PROTECTED]
>
Nov 23, 2007 at 03:07 PM
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 signatu=
re =
from general notation to jvm.
> Dmitry Marienko <dima@[EMAIL PROTECTED]
> wrote:
>
>> I'm dumb on simple question. How can I get method's signature in =
my
>> java program in "JVM notation" ?
>> For example for class
>> class A {
>> void foo(int a,int b) { ... }
>> }
>> 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 =3D new ClassParser(args[0]);
> JavaClass clazz =3D parser.parse();
> Method[] methods =3D clazz.getMethods();
>
> for(int i=3D0; 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
>
--dima