[英]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.