我可以使用子类中的以下代码将两个值传递给方法:
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");
}
我的问题是为什么我必须通过两次键入String来声明字符串变量arg和arg2?它们都是String类型的,所以我不能只写(String arg,arg2)吗?
答案 0 :(得分:4)
你不能。这就是语言的设计方式。
做出了选择,方法签名应该以它们的方式工作。为了支持此功能,它的设计可能有所不同(例如golang确实如此)。
但这就是Java的方式,并且似乎不太可能对其进行更改以支持Java。
答案 1 :(得分:3)
这是Java设计要求。
由于Java是一种强类型语言,因此您必须定义每个变量的类型。
声明字符串(或其他)时,可以仅使用一个类型声明来设置多个变量。
String a,b;
但是在一种方法中,参数的类型可以不同
void myFunction(String a, Integer b, [etc...])
因此,您必须为每种类型指定参数。
参数数量可变的函数有一个例外情况
void myFunction(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
答案 2 :(得分:2)
您无法以所需的方式使用它。
您可以使用变量参数(变量)-(应该在方法的参数中最后声明)
示例:
public static void echo(String... args) {
System.out.println("You entered: " + args[0] + " and " + args[1]);
}