簡體   English   中英

如何使方法返回類型為 Callable<boolean></boolean>

[英]How to make a method return type as Callable<Boolean>

在我的一種方法中:

public void pageIsReady()

實施是

Awaitility.await().atMost(5, TimeUnit.SECONDS).until(isPageLoaded());

在這里, isPageLoaded()方法返回 boolean 值,但我希望它返回 Boolean 的Callable ,因為Awaitility中的until()方法需要Callable<Boolean>

請幫助我使方法isPageLoaded()返回Callable<Boolean>

下面是isPageLoaded()方法的實現:

protected Boolean isPageLoaded() {
    String jsQuery = "function pageLoaded() "
            + "{var loadingStatus=(document.readyState=='complete');"
            + "return loadingStatus;};"
            + "return pageLoaded()";

    boolean isSuccess = false;
    try {
        isSuccess = (Boolean) evaluateJavascript(jsQuery);
    } catch (Exception exp) {
        exp.printStackTrace();
    }
    return isSuccess;
}

只需按如下方式定義您的isPageLoaded()方法:

protected Callable<Boolean> isPageLoaded() {
    //code..
}

最簡單的方法是使用方法引用Callable<Boolean> isPageLoaded = this::isPageLoaded ,或者將其顯式用作 lambda Callable<Boolean> isPageLoaded = () -> isPageLoaded();

這看起來像

Awaitility.await().atMost(5, TimeUnit.SECONDS).until(this::isPageLoaded);
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> isPageLoaded());

另一種方法是將您的方法定義為返回Callable<Boolean>然后使用 lambda 語法() -> {}來編寫可調用對象。

protected Callable<Boolean> isPageLoaded() {
    return () -> {
        String jsQuery = "function pageLoaded() "
            + "{var loadingStatus=(document.readyState=='complete');"
            + "return loadingStatus;};"
            + "return pageLoaded()";

        boolean isSuccess = false;
        try {
            isSuccess = (Boolean) evaluateJavascript(jsQuery);
        } catch (Exception exp) {
            exp.printStackTrace();
        }
        return isSuccess;
    };
}

Lambda 表達式和方法引用是非常強大的工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM