2017-11-06 1 views
0

私はこのコードを持っている:ここにブレークポイントを置くEclipse:CompletableFutureで呼び出されたメソッドをデバッグすることは可能ですか?

CompletableFuture.runAsync(() -> addReferenceAnyBrowser(referenceManagementTestPageSafari)); 

は問題なく動作します。

ただし、addReferenceAnyBrowserメソッドにブレークポイントを設定すると、何も起こりません。これは予想される動作ですか?

Java 8は既にかなり長い間存在しているので、Eclipseがlambdaもデバッグできると期待しています。

答えて

3

Eclipseはまた、次の例で確認することができるよう、ラムダ関数から呼び出されるメソッドにブレークポイントをサポートしています。あなたのケースでは

public class Foo { 

    public static void main(String[] args) throws Exception { 
     CompletableFuture<Void> future = CompletableFuture.runAsync(() -> foo()); 
     future.get(); 
    } 

    private static void foo() { 
     System.out.println("foo"); 
    } 

} 

、これはCompletableFutureのインスタンスが作成されていることを意味するが、ラムダget()がまだ呼び出されていないので(lazy evaluationの関数がまだ実行されていません。

関連する問題