我有以下方法
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/