在Java中,使用省略号表示可选参数是一个好主意吗?

在Java中,使用省略号表示可选参数是一个好主意吗?,java,ellipsis,Java,Ellipsis,我想知道使用省略号表示可选参数是否是个好主意 public void update(Object object, boolean... checkFirst) { if (checkFirst[0]) { ... } //if } //update 我使用的代码连接到一个没有主键的DB表以允许多个插入(遗留代码,所以请原谅这里的错误做法)。因此,我没有使用两种方法(重载),而是认为我可以使用省略号来实现相同的效果。但你认为这会是一种可怕的做法吗 干杯 A

我想知道使用省略号表示可选参数是否是个好主意

public void update(Object object, boolean... checkFirst)
{
    if (checkFirst[0])
    {
        ...
    } //if
} //update
我使用的代码连接到一个没有主键的DB表以允许多个插入(遗留代码,所以请原谅这里的错误做法)。因此,我没有使用两种方法(重载),而是认为我可以使用省略号来实现相同的效果。但你认为这会是一种可怕的做法吗

干杯


Alexei Blue.

省略号的合适术语是。Varargs允许开发人员传递数量可变的参数

使用varargs提供一个可选参数不是一个好主意。最好按照下面的代码示例使用

public void update(Object object)
{
    update(update, false);
}

public void update(Object object, boolean check)
{
    if (check)
    {
        ...
    } //if
}

这样,开发人员就不能传入多个布尔值,但可以不传入任何布尔值。

省略号的正确术语是。Varargs允许开发人员传递数量可变的参数

使用varargs提供一个可选参数不是一个好主意。最好按照下面的代码示例使用

public void update(Object object)
{
    update(update, false);
}

public void update(Object object, boolean check)
{
    if (check)
    {
        ...
    } //if
}

这样,开发人员就不能传入多个布尔值,但可以不传入任何布尔值。

在我看来,这不是一种糟糕的做法。是的,它允许你发送27个布尔人而不是一个。我不认为这是一个大问题。然而,重载签名的成本并不足以证明这一点。我认为这是一种糟糕的做法——如果您有第二个(可选)标志,它需要一个参数名和文档。在方法签名中出现省略号意味着可以使用函数将无限数量的有意义的值传递给开发人员。是的,它允许你发送27个布尔人而不是一个。我不认为这是一个大问题。然而,重载签名的成本并不足以证明这一点。我认为这是一种糟糕的做法——如果您有第二个(可选)标志,它需要一个参数名和文档。在方法签名中出现省略号意味着可以使用该函数向开发人员传递无限数量的有意义的值。是的,最好还是坚持使用重载功能:)我想我只是有那么一天了。是的,最好还是坚持使用重载功能:)我想我只是有那么一天,哈哈