gpt4 book ai didi

具有可选列出参数的 Java 函数

转载 作者:行者123 更新时间:2023-11-30 03:06:10 25 4
gpt4 key购买 nike

我正在 Java 应用程序中重写一个日志记录类。我们拥有的主要日志记录功能之一使用对象来确定输出的位置。我想要做的是摆脱该对象,并将输出流直接列在参数中作为可选参数,如下所示:

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

其中 stdout、trace 和 debug 是可选参数,可能不存在,但也可以以任何顺序存在。例如,还可以编写以下内容:

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

这可以在 Java 8 中使用Optional类来完成吗?还是我必须将输出流合并到字符串或数组中?

最佳答案

Java 8 Optional与您正在寻找的内容无关。安Optional是某个类的实例的包装器,它可以为您节省一些空检查。如果您使用Optional方法中的参数,您仍然必须在每次调用中将所有这些参数传递给 log方法(即使其中一些为空)。

如果所有可选参数都有一个公共(public)基类或接口(interface),则可以使用可变参数参数。

例如:

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

}

但是,您不能以任何顺序传递它们。例如,您必须决定 output[0] 的作用是什么? ,和output[1]仅当 output[0] 时才能通过也通过了。

另一种方法是使用具有不同参数组合的多个重载方法。

关于具有可选列出参数的 Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34729548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com