簡體   English   中英

具有可選列出參數的Java函數

[英]Java Function With Optional Listed Parameters

我正在Java應用程序中重寫日志記錄類。 我們擁有的主要日志記錄功能之一使用一個對象來確定輸出在哪里。 我想做的是擺脫該對象,並在輸出參數中直接列出輸出流作為可選參數,如下所示:

Logger.log("Log String Here", stdout, trace, debug, device1);

其中stdout,trace和debug是可選參數,可能不存在,但也可以按任何順序存在。 例如,還可以編寫以下內容:

Logger.log("Log String Here", debug, trace, deviceTrace);

可以使用Optional類在Java 8中完成此操作,還是必須將輸出流組合成字符串或數組?

Java 8 Optional與您要尋找的內容無關。 Optional是某個類的實例的包裝,可以為您節省一些空檢查。 如果在方法中使用Optional參數,則仍必須在每次調用中將所有這些參數傳遞給log方法(即使其中一些為空)。

如果所有可選參數都具有公共基類或接口,則可以使用varargs參數。

例如 :

public static void log (String message, OutputStream... output) {

}

但是,您不能以任何順序傳遞它們。 例如,您必須確定output[0]的作用,並且只有在output[0]也通過的情況下才能通過output[1]

另一種選擇是讓多個重載方法具有不同的參數組合。

暫無
暫無

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

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