我可以在子类中使用此代码将两个值传递给方法:
try
{
echo(args[0], args[1]);
}
catch (Exception e)
{
System.out.println("Argument required");
}
以及超类中的这段代码:
public static void echo(String arg, String arg2)
{
try
{
System.out.println("You entered: " + arg + " and " + arg2);
}
catch (Exception e)
{
System.out.println("Argument required");
}
我的问题是为什么我必须通过键入字符串两次来声明字符串变量 arg 和 arg2?它们都是字符串类型,所以我不能只写(字符串 arg,arg2(?
你就是不能。这就是语言的设计方式。
已选择方法签名应按其方式工作。它本可以采用不同的设计来支持这一点(例如,golang 确实如此(。
但Java就是这样,而且似乎不太可能改变它来支持它。
这是一个 Java 设计要求。
因为Java是一种强类型语言,你必须定义每个变量的类型。
当您声明 String (或其他内容(时,您可以使用只有一个类型声明设置多个变量。
String a,b;
但是在方法中,参数可以是不同类型的
void myFunction(String a, Integer b, [etc...])
因此,您必须为参数指定每种类型。
参数数量可变的函数例外
void myFunction(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
你不能以你想要的方式使用它。
您可以使用变量参数(Varargs( - (应该在您的方法的参数中声明为最后(
例:
public static void echo(String... args) {
System.out.println("You entered: " + args[0] + " and " + args[1]);
}