Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse - `open call hierarchy` stop searching in lambda chain

Tags:

Here is my sample java code:

public class Test {

    public static void main(String[] args) {
        methodDepth0(
            ()->
                methodDepth1(
                    ()->
                        methodDepth2()
                )
        );
    }

    static Object methodDepth2() {
        return null;
    }

    interface MyIF {
        void call();
    }

    static void methodDepth0(MyIF myIf){
        myIf.call();
    }

    interface MyIF2 {
        void call();
    }

    static void methodDepth1(MyIF2 myIf2){
        myIf2.call();
    }
}

When I open call hierarchy of method methodDepth2() from Eclipse(4.4), open call hierarchy stop searching next caller: open call hierarchy stop searching next caller method

What I expect is like opening call hierarchy of method methodDepth1() which show until the main method. opening call hierarchy of method <code>methodDepth1()</code> which show until the <code>main</code> method

like image 936
andyf Avatar asked May 15 '15 08:05

andyf


1 Answers

From what I can tell the lack of call hierarchy depth is due to (re)evaluation of code at runtime. It is explained in 15.27.4 Run-Time Evaluation of Lambda Expressions in the Java Language Specification.

At run time, evaluation of a lambda expression is similar to evaluation of a class instance creation expression, insofar as normal completion produces a reference to an object. Evaluation of a lambda expression is distinct from execution of the lambda body.

like image 119
Voidpaw Avatar answered Sep 20 '22 09:09

Voidpaw