Cómo obtener la lista de los métodos definidos en otra clase llamada de un método dado en Java

harshit Modani:

Tengo la intención de obtener la lista de los métodos definidos en un solo paquete (CommonPackage) llamados por una clase definida en otro paquete (ServicePackage). Por eso, necesito un código para rastrear un método determinado y obtener los métodos llamados fuera de esta clase.

He investigado las reflexiones de Java y no fue capaz de encontrar ninguna solución para esto. Yo también pasé por Cómo obtener la lista de métodos llamados de un método que utilizan la reflexión en C # y no era capaz de encontrar ninguna solución concluyente para JAVA específicamente.

ClassA {
    private ClassB classB;
    public methodA1(){
        classB.methodB1();
    }
}

ClassB {

    public methodB1(){
      // Some code
    }
}

Esperábamos: Para ClassA.MethodA1, obtenemos la lista de los métodos llamados dentro de él. Salida: ClassB.MethodB1

harshit Modani:

He utilizado un código de bytes de fuente abierta llamada manipulador Javassists que ya cuenta con una API para traer las llamadas de método realizadas en un determinado método. También tiene método para buscar el atributo de código que le puede dar el nº de líneas en un método determinado.

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.NotFoundException;
import javassist.expr.ExprEditor;
import javassist.expr.MethodCall;
public static void main(String[] args)
{
    ClassPool cp = ClassPool.getDefault();
    CtClass ctClass = null;
    try {
        ctClass = cp.get(className);
    } catch (NotFoundException e) {
        throw new RuntimeException(e);
    }

    CtMethod ctMethod = ctClass.getMethod(methodName);

    ctMethod.instrument( 
           new ExprEditor() {
               public void edit(MethodCall calledMethod) {
                   System.out.println("Method "+ calledMethod.getMethod().getName() + " is called inside "+methodName);
           }
    });
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=179235&siteId=1
Recomendado
Clasificación