gpt4 book ai didi

java - 为什么Java的main方法使用String[]而不是String dot dot dot

转载 作者:行者123 更新时间:2023-11-29 07:18:01 40 4
gpt4 key购买 nike

<分区>

数组参数声明会导致语法错误发生调用的地方。然而 main 方法使用 String[] 而不是 String...我如何理解这种不一致?

package domain.test;

import utilities.CConsole;

public class Tester {
public static void main(String[] args)
{
Test1 t = new Test1();
t.method1(0); // the array will exist but have a length of zero
t.method1(0, (Object[])null); // the array will not exist
t.method1(0, "a");
t.method1(0, "a", "b");
CConsole.pw.format("\n");

t.method2(0); // the array will exist but have a length of zero
t.method2(0, (String[])null); // the array will not exist
t.method2(0, "a");
t.method2(0, "a", "b");
CConsole.pw.format("\n");
}
}

class Test1 {
void method1(int number, Object... args) // Object[] causes syntax errors
{
if (args == null)
CConsole.pw.format("args == null\n");
else
{
CConsole.pw.format("args != null ");
CConsole.pw.format("args.length %d\n", args.length);
}
}

void method2(int number, String... args) // String[] causes syntax errors
{
if (args == null)
CConsole.pw.format("args == null\n");
else
{
CConsole.pw.format("args != null ");
CConsole.pw.format("args.length %d\n", args.length);
}
}
}

如何解释不一致?

以下是为说它编译的人提供的:要得到这个错误,请将 method1() 更改为使用 Object[]。

总结编辑: 教训似乎是这样的。正如@Andrew Barber 强调的那样,String... 与 String[] 不同。它们一般不能互换,所以不要试图以同样的方式对待它们(尽管我可以说出它们看起来可以互换的原因)。在 main() 的情况下,它们可以互换的。在 main() 的情况下,有些人可能会称之为糖。

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com