2011-05-25 1 views
6

Objectif: Obtenir la signature de méthode publique (valeur de retour, paramètre, nom de méthode) à partir des fichiers de bytecode java. J'utilise le framework ObjectWeb ASM. Problème: J'ai analysé la spécification API de l'ASM et essayé plusieurs exemples, mais je ne sais toujours pas comment obtenir la signature. La classe MethodNode possède un champ de signature, mais la valeur est null.Comment obtenir la signature de méthode avec ObjectWeb ASM?

Répondre

11

Vous pouvez essayer quelque chose comme ceci:

ClassReader cr = new ClassReader(is); 
cr.accept(new EmptyVisitor() { 
    public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { 
    if((Opcodes.ACC_PUBLIC & access)>0) { 
     System.err.println("method name: " + name); 
     System.err.println("return type: " + Type.getReturnType(desc)); 
     System.err.println("argument types: " + Arrays.toString(Type.getArgumentTypes(desc))); 
    } 
    return super.visitMethod(access, name, desc, signature, exceptions); 
    } 
}, 0); 
Questions connexes