java - 在 Java 8 中使用可选参数调用方法
问题描述
我有以下方法
public static Boolean test(String str, Optional<Boolean> test) {
}
但如果我试着这样称呼它
test("hello")
我收到一个错误,该方法需要两个参数。
Optional 参数不应该允许我在不提供 Optional 参数的情况下调用测试方法吗?
解决方案
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) 也可能很有趣。
推荐阅读
- sql - 循环遍历 SSIS 包中的多行
- node.js - 规则“缩进”的配置无效:值“[object Object]”不应具有其他属性
- python - 为标题栏设置自定义颜色
- c# - 转换为新的 csproj 后,Roslyn 分析器无法工作
- django - django 2 在传递 url 时没有反向 macth
- c# - 如何在一次 AJAX 调用中返回两个部分
- java - JLabel 不显示,除非与 mouselistener 一起使用
- c# - 在 Sharepoint 环境中使用 Microsoft.Office.Interop.Word
- javascript - 谷歌应用引擎在与 mlab 连接时给出错误“UnhandledPromiseRejectionWarning: MongoError: Authentication failed.emitOne (events.js)”
- python - 试图将 GLOBAL 放在 Python 中的正确位置