簡體   English   中英

可選的 java 8,從方法中“返回”

[英]Optional java 8 with "return" from methods

好的,我想創建一個根據某些條件返回字符串的方法(參數是否為空):

private static String getErrorMessage(String code, Object... params) {
    Optional.ofNullable(params)
              .ifPresent(params -> processWithParams(code,params))
              .orElse(() -> process(code));
}

processWithParams() 和 process() 兩種方法都返回字符串(字符串值是我想從 getErrorMessage() 方法返回的值),這可能嗎?

謝謝

我不明白為什么你應該接受一個為params傳遞null的調用者。 如果有人只用一個參數調用getErrorMessageparam將是一個空數組(不是null )。 所以我建議:

    Objects.requireNonNull(params);
    return processWithParams(code, params);

不禁止調用者使用null作為第二個參數進行調用。 如果您的代碼已經有很多這樣的調用,而您現在不想清理它:

    if (params == null) {
        params = new Object[] {};
    }
    return processWithParams(code, params);

但是,如果您出於某種奇怪的原因堅持,鮑里斯蜘蛛是正確的:

    return Optional.ofNullable(params)
              .map(p -> processWithParams(code, p))
              .orElse(process(code));

或者如果不需要的處理非常昂貴:

              .orElseGet(() -> process(code));

暫無
暫無

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

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