Java 变量args是否只能用作方法参数?
这很好:-Java 变量args是否只能用作方法参数?,java,variadic-functions,Java,Variadic Functions,这很好:- public class Demo { public static void main(String... args) { } } 但这并没有得到编译 public class Demo { public static void main(String... args) { String... strVarArgs ; //here i initiallize strVarArgs by some logic, lik
public class Demo {
public static void main(String... args) {
}
}
但这并没有得到编译
public class Demo {
public static void main(String... args) {
String... strVarArgs ;
//here i initiallize strVarArgs by some logic, like we do for arrays
}
}
如果我语法错误,请纠正我:-)
克莱特斯写道:- 它实际上只是数组的语法糖 下面是一个示例,后面是由 凯西·塞拉(Kathy Sierra)和伯特·贝茨(第一爪哇大学校长,第二版,麦格劳·希尔/奥斯本):- 主题泛型
,其中MyClass是一个类,以及
,其中MyInterface是一个接口
以下是本书的原稿(第548页,第16章):-
在泛型中,“扩展”表示“扩展或实现”???
java工程师必须为您提供一种方法来对参数化类型进行约束,以便您可以将其限制为。但您还需要约束类型,以便只允许实现特定接口的类。因此,在这种情况下,我们需要一种语法来处理继承和实现两种情况。换句话说,这适用于扩展和实现获胜的词是……扩展。
每当sun工程师有机会重用现有关键字时,就像他们在这里使用“扩展”时所做的那样,他们通常都会这样做。但有时他们没有选择……(断言,枚举)。
我的问题:var-args只是数组的一个语法糖,没有数组的其他功能吗?是的,varargs只适用于函数参数 它实际上只是数组的语法糖,因此不是:
String... strVarArgs ;
你想要
String strVarArgs[];
例如:
public class VargArgsExample {
public static void printArgs(long requiredLongArgument, String... notRequiredStringArray) {
System.out.println(requiredLongArgument);
if (notRequiredStringArray != null) {
for(String arg: notRequiredStringArray) {
System.out.println(arg);
}
}
}
public static void main(String[] args) {
printArgs(1L);
printArgs(1L, "aa");
printArgs(1L, "aa", "bb");
}
}
正如您所看到的,sugar语法允许我们在不指定varargs参数的情况下调用方法。如果没有传递vararg参数,则该参数为null
不需要以另一种方式声明变量,因此不使用它。这就是为什么会出现编译时错误。我认为最好将类型信息保存在一个地方:
String[]strvargs
我希望它们没有包含这种语法:(它的String[]args[];这真的很难理解(是的,这是合法的Java语法)。最近我了解到你甚至可以将[]对于方法参数列表后的返回类型。幸运的是,我还没有在野外看到。我问这个问题是因为我真的不知道。如何通知加入我的查询的用户,如果我进行编辑,bcoz对于回答问题的每个用户只有一个添加注释。注释是否也会通知正在注释的用户在其他用户答案上。Vaargs会导致问题,因此默认情况下您可能不应该使用它。当然,使用formain
是没有帮助的。thnx。非常感谢为编辑提供任何好的参考。:)我不明白关于扩展的关键字的材料与原始问题有什么关系。