首页 > 解决方案 > 是否有一种可能在没有警告的情况下传递可选参数?

问题描述

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

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, Object...) 的最后一个参数的类型 Kind[] 与可变参数类型不完全匹配。强制转换为 Object[] 以确认非可变参数调用,或传递 Object 类型的单个参数以进行可变参数调用。

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

标签: javaoptional-parameters

解决方案


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

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

所以:

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

推荐阅读