【问题标题】:Is there a one-line possibility to pass optional parameters without warning? [duplicate]是否有一种可能在没有警告的情况下传递可选参数? [复制]
【发布时间】:2018-11-04 11:06:33
【问题描述】:

我有以下采用可选参数的方法:

public void error(Message msg, Object... msgParams) {
        error(la.line, la.col, msg, msgParams);
        throw new Errors.PanicMode();
}

.. 我想这样称呼它:

private void handleCheck(boolean found, Message msg, Kind... expected) {
        if (!found) {
            error(msg, expected);
        }
}

问题:

这给了我以下警告:

输入方法 error(Errors.Message, 的最后一个参数的 Kind[] Object...) 与 vararg 参数类型不完全匹配。投射到 Object[] 确认非可变参数调用,或通过个人 用于可变参数调用的 Object 类型的参数。

它仍然可以正常工作,没有意外错误,但我很好奇是否有一种方法可以在不检查参数长度或类似内容的情况下在一行中调用这样的方法。

【问题讨论】:

    标签: java optional-parameters


    【解决方案1】:

    它会在警告消息中告诉您要做什么:

    转换为 Object[] 以确认非可变参数调用

    所以:

    error(msg, (Object[]) expected);
    

    【讨论】:

    • 谢谢,基于这个答案,以及类似问题的一些答案,我将方法更改为“private void handleCheck(boolean found, Message msg, Object... expected)”,这也适用于这种情况
    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2012-03-19
    相关资源
    最近更新 更多