java - Java 8 中使用可选参数调用方法

标签 java

我有以下方法

public static Boolean test(String str, Optional<Boolean> test) {


}

但如果我尝试这样调用它

test("hello")

我收到一个错误,该方法需要两个参数。

可选参数不应该允许我在不提供可选参数的情况下调用测试方法吗?

最佳答案

Optional 不像 var-args 那样是可选参数。
Optional 是一个容器对象,可能包含也可能不包含非空值。

因此您可以调用该方法:

test("...", Optional.of(true));

test("...", Optional.empty());

请注意,使用var-args:

public static Boolean test(String str, Boolean... test) {    
 //...
}

这将是有效的:

test("hello")

但是 var-args 不是传递可选参数的正确方法,因为它传递 0 或更多 个对象,而不是 0 或 1目的。

方法重载更好:

public static Boolean test(String str, Boolean test) {
 // ...
}

public static Boolean test(String str) {
 // ...
}

在其他一些情况下,@Nullable 约束 (JSR-380) 也可能很有趣。

关于java - Java 8 中使用可选参数调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144865/

相关文章:

c# - 在 C#/Java 中获取实时市场/股票报价

java - 如果一段代码没有在一定的时间限制内返回,如何在 Java 中导致一段代码超时?

Java - 不透明颜色

java - 为什么在 JVM 参数末尾添加 -noverify

java - 如何检查java中的日期模式是否有效?

java - 如何遍历 JPA 响应并从中获取值

java - 给定后序构造二叉树

java.lang.OutOfMemory错误: Java heap space (Project Euler 14)

java - 添加 Firebase UI 依赖项时出现错误 :Execution failed for task ':app:processDebugManifest' .

Java - 创建长度递增的字符串列表的时间复杂度