You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java参数数组可否不传值?可变参数语法使用相关疑问

问题1:给出的test方法如何调用

你提供的test方法本身是非法的,不符合Java语法规则。Java明确规定可变参数(...定义的参数)必须位于方法形参列表的最后一位,你写的示例里可变参数String... strings之后还定义了String s2,这段代码在编译阶段就会直接报错,不存在可调用的可能。

如果要调整为合法的方法定义,需要把可变参数放到末尾,示例如下:

// 修正后的合法定义
void test(String s, String s2, String... strings) {}

合法定义后的调用方式可参考:

// 可变参数不传入值
test("参数1", "参数2");
// 可变参数传入多个零散值
test("参数1", "参数2", "可变1", "可变2", "可变3");
// 可变参数直接传入数组
test("参数1", "参数2", new String[]{"可变1", "可变2"});

问题2:如何用...语法实现等效代码

仅需要将foo方法的形参从数组声明改为可变参数声明即可,调用时既可以显式传入空数组,也可以直接不传参数,编译器会自动封装为长度为0的空数组传入,和你原代码效果完全一致。
完整示例代码:

public static void main(String[] args) {
    // 写法1:直接不传参数,等价于传入空数组
    foo();
    // 写法2:和你原来的写法完全一致,也支持
    foo(new String[] {});
}

// 把原来的String[] s改为String... s即可
static void foo(String... s) {}

内容的提问来源于stack exchange,提问作者TK36

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:42:02