因此,我发现对于零个或多个,我们有3点表示法,但是对于零个或一个,有什么东西吗?

我需要更改一个方法,而不是重载它,我想知道是否存在仅允许传递零个或一个值的语法?

public void test(String sample, ObjectMapper... argOm){
    ObjectMapper om = (!argOm.equals(null)?argOm:new ObjectMapper());
}

这并没有实现我期望的[]。我只想零或一。

除了更改对此的所有引用之外,重载是唯一的方法吗?

最佳答案

如果您希望编译器为您检查参数数量,则需要使用重载。不幸的是,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");
    }
    ...
}

请注意,用于允许调用者不传递对象映射器的条件代码被重载替换,该重载在编译时检测到这种情况。

08-17 19:46