差分fn(字符串...args) vs fn(String[] args)
2022-08-31 14:42:11
此语法对以下情况有何用处:
function(String... args)
这与写作相同吗?
function(String[] args)
仅在调用此方法时才有区别,或者是否涉及任何其他功能?
此语法对以下情况有何用处:
function(String... args)
这与写作相同吗?
function(String[] args)
仅在调用此方法时才有区别,或者是否涉及任何其他功能?
两者之间的唯一区别是调用函数的方式。使用 String var args,您可以省略数组的创建。
public static void main(String[] args) {
callMe1(new String[] {"a", "b", "c"});
callMe2("a", "b", "c");
// You can also do this
// callMe2(new String[] {"a", "b", "c"});
}
public static void callMe1(String[] args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
public static void callMe2(String... args) {
System.out.println(args.getClass() == String[].class);
for (String s : args) {
System.out.println(s);
}
}
区别仅在调用方法时。第二种形式必须用数组调用,第一种形式可以用数组(就像第二个一样,是的,根据Java标准这是有效的)或字符串列表(用逗号分隔的多个字符串)或根本没有参数(第二个总是必须有一个,至少必须传递null)来调用。
它在语法上是糖。实际上编译器会转动
function(s1, s2, s3);
到
function(new String[] { s1, s2, s3 });
内部。