为什么我们不能只使用数组而不是varargs?

赛纳特SR:

我只是碰到varargs一边学习的Android( doInBackground(Type... params)),SO职位明确它的使用

我的问题是为什么我们不能只使用数组而不是数组 varargs

public void foo(String...strings) {  }

我可以通过将可变数量的参数打包到数组中并将其传递给诸如此类的方法来替换这种类型的调用

public void foo(String[] alternativeWay){  }

也不会main(String[] args)在Java中使用varargs,如果不是我们如何能够通过运行参数,它

请提出的好处或用途,varargs还有其他重要的事情要知道吗varargs

乔恩·斯基特(Jon Skeet):

之间的唯一区别

foo(String... strings)

foo(String[] strings)

用于调用代码。考虑一下这个调用:

foo("a", "b");

这对于第一个声明是有效的foo,并且编译器将在执行时发出代码以创建包含对"a"和的引用的数组"b"这是不是与第二个声明有效foo,但因为不使用可变参数。

无论哪种情况,调用者都可以显式创建数组:

for(new String[] { "a", "b" }); // Valid for either declaration

Java中的main(String [] args)也会使用varargs,如果不是,我们如何将运行时参数传递给它

当它写的main(String[] args)不是它时;如果写的main(String... args)话就可以了。不过,这与JVM的处理方式无关,因为JVM初始化会使用命令行参数创建一个数组仅当您编写自己的代码以main显式调用时,它才会有所不同

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们不能只使用[] []而不是int [] []?

为什么我们甚至需要delete运算符?(我们不能只使用delete [])

为什么我们使用()=> []而不是[]?

为什么我们不能使用push方法来迭代javascript数组?

为什么我们使用数组属性而不是直接使用它

为什么我们不能只使用公共 apiKey 连接到 node.js 服务器上的 firestore

为什么我们使用零长度数组而不是指针?

为什么我们使用WebDriver而不是Selenium IDE?

为什么我们使用 promise 而不是 if/then 语句?

为什么我们仍然使用CPU而不是GPU?

淘汰赛:我们不能只使用observable而不是observablearray

在OCaml中,我们为什么有'+。','-。' 但是我们仅使用“ <”而不是“ <。”?

为什么我们不能在 C 编程语言中使用 a 而不是 &a 来存储变量 a 的值?

为什么我们不能为XML名称空间使用随机字符串而不是URI?

为什么我们不能使用带有数组名称的间接运算符?

为什么我们不能在数组函数参数中省略数组破坏的括号?

为什么我们不能将SSL证书视为Pgp密钥,而不是信任CA?

为什么我们不能在所有情况下都只使用可比性?

为什么在AWS中需要专用子网+ NAT转换?我们不能只使用公共子网+正确配置的安全组吗?

为什么我们不能通过变量定义数组大小?

为什么我们不能直接将arr分配给数组指针

为什么我们不能在C#中的结构中定义数组

为什么我们不能直接在javascript中设置数组值?

为什么我们不能比较不指向同一数组中元素的指针?

为什么我们不能在 Javascript 中提供数组的大小?

为什么我们不能在 C++ 中比较函数数组的类型?

当我们在一个接口中添加两个抽象方法并只实现一个方法时,为什么我们不能使用 lambda 实现另一个方法呢?

为什么我们使用@staticmethod?

为什么我们使用抽象