所以我发现我们有零点或更多的3点符号但是有零或一个吗?
我需要改变一个方法,而不是重载它我想知道是否有一个语法只允许零或一个值传递?
public void test(String sample, ObjectMapper... argOm){
ObjectMapper om = (!argOm.equals(null)?argOm:new ObjectMapper());
}
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,因为它期待[].我只想零或一个.
除了改变对此的所有引用之外,重载是唯一的方法吗?
如果您希望编译器为您检查参数的数量,则需要使用重载.遗憾的是,Java没有提供默认参数机制,该机制用于在其他语言中对"零或一"进行建模.
幸运的是,重载非常简单,它允许您替换实现中的条件赋值:
public void test(String sample){
test(sample, new ObjectMapper());
}
public void test(String sample, ObjectMapper om){
if (om == null) {
throw new IllegalArgumentException("object mapper");
}
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,用于允许调用者不传递对象映射器的条件代码将替换为重载,该重载在编译时检测到这种情况.
最佳做法是重载方法并提供默认值,如下所示:
public void test(String sample) {
test(sample, new ObjectMapper());
...
}
public void test(String sample, ObjectMapper argOm) {
ObjectMapper om;
if (argOm != null)
om = argOm;
...
}
Run Code Online (Sandbox Code Playgroud)
默认值是新的ObjectMapper对象.带有1个参数的方法使用2个参数调用该方法,包括默认值.
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |