我有以下方法
public static Boolean test(String str, Optional<Boolean> test) {
}
Run Code Online (Sandbox Code Playgroud)
但如果我试着称之为
test("hello")
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,该方法需要两个参数.
不应该让Optional参数调用测试方法而不提供Optional参数吗?
Optional不是可选参数var-args.
Optional是一个容器对象,可能包含也可能不包含非null值.
所以你可以调用方法:
test("...", Optional.of(true));
Run Code Online (Sandbox Code Playgroud)
要么
test("...", Optional.empty());
Run Code Online (Sandbox Code Playgroud)
请注意var-args:
public static Boolean test(String str, Boolean... test) {
//...
}
Run Code Online (Sandbox Code Playgroud)
这是有效的:
test("hello")
Run Code Online (Sandbox Code Playgroud)
但var-args 不是传递可选参数的正确方法,因为它传递0个或更多个对象而不是0或1个对象.
方法重载更好:
public static Boolean test(String str, Boolean test) {
// ...
}
public static Boolean test(String str) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
在其他一些情况下,@Nullable约束(JSR-380)也可能很有趣.
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |