2011-05-25 5 views
6

Propósito: obtener la firma pública del método (valor de retorno, parámetro, nombre del método) de los archivos de código de bytes de Java.¿Cómo obtener la firma del método con ObjectWeb ASM?

Estoy utilizando el framework ASM de ObjectWeb.

Problema: Escaneé a través de la especificación API de ASM y probé varios ejemplos, pero aún no tengo idea de cómo obtener la firma. La clase MethodNode tiene un campo de firma, pero el valor es nulo.

Respuesta

11

Usted puede intentar algo como esto:

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); 
Cuestiones relacionadas