lundi 2 novembre 2020

Java invoke static method with Foreign Context / Check method for recursion

I wanted to check if a method uses recursion. So I wrote this mock up:

public class Main {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        Method method = Child.class.getMethod("toBeTested", int.class);
        Object result = method.invoke(Super.class, 5);
        System.out.println((Integer) result);
    }
}


public class Super extends Child{

    public static int toBeTested(int a){
        System.out.println("validating recursion");
        return Child.toBeTested(a);
    }
}


public class Child {

    public static int toBeTested(int a){
        if(a==0)return 0;
        return toBeTested(a-1)+1;
    }
}

So I tried executing the method in Child with the Context of Super.class hoping in the recursion it would call the Super::toBeTested and I could hence validate the method uses recursion.

Is this even possible the way I tried? If no why not? Any other ideas to check foreign code for recursion...





Aucun commentaire:

Enregistrer un commentaire