Wie Liste von Methoden in einer anderen Klasse von einer bestimmten Methode in Java genannt definiert erhalten

Harshit modani:

Ich plane Liste von Methoden in einem Paket (CommonPackage) definiert erhalten durch eine Klasse mit dem Namen in einem anderen Paket definiert (Servicepaket). Dafür brauche ich ein einen bestimmten Methodencode zu kriechen und die Methoden genannt außerhalb dieser Klasse zu bekommen.

Ich habe die Java Reflexionen recherchiert und konnte keine Lösung dafür finden. Ich ging auch durch , wie die Liste der Methoden von einem Verfahren unter Verwendung von Reflexion in C # genannt zu bekommen und war nicht in der Lage Insbesondere wird keine schlüssige Lösung für JAVA zu finden.

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

ClassB {

    public methodB1(){
      // Some code
    }
}

Erwartet: Für ClassA.MethodA1, erhalten wir die Liste der Methoden im Inneren genannt. Ausgang: ClassB.MethodB1

Harshit modani:

I verwendet , um einen Open - Source - Bytecode - Manipulator genannt Javassists die bereits ein API - Methodenaufrufe in einem gegebenen Verfahren hergestellt zu holen ist. Es hat auch Verfahren das Code - Attribut zu holen , die Ihnen die Anzahl der Zeilen in einem gegebenen Verfahren geben können.

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);
           }
    });
}

Ich denke du magst

Origin http://43.154.161.224:23101/article/api/json?id=179221&siteId=1
Empfohlen
Rangfolge