当前位置:  开发笔记 > 编程语言 > 正文

方法签名中的对象数组

如何解决《方法签名中的对象数组》经验,为你挑选了1个好方法。

请考虑以下方法签名:

public fooMethod (Foo[] foos) { /*...*/ }

public fooMethod (Foo... foos) { /*...*/ }

说明:前者将一个Foo对象数组作为参数 - fooMethod(new Foo[]{..})而后者采用任意数量的Foo类型的参数,并将它们表示为方法中的Foo:s数组 - fooMethod(fooObject1, fooObject2, etc...).

如果两者都被定义,Java会抛出一个拟合,声称它们是重复的方法.我做了一些侦探工作,发现第一个声明确实需要一个显式的Foo对象数组,这是调用该方法的唯一方法.第二种方式实际上接受任意数量的Foo参数并且还接受Foo对象的数组.

所以,问题是,既然后一种方法似乎更灵活,有没有理由使用第一个例子,或者我错过了什么重要的东西?



1> Shimi Bandie..:

这些方法实际上是相同的.

此功能称为varargs,它是一种编译器功能.幕后花絮就是前版本.

如果你定义一个接受Object的方法,你会发现一个陷阱,你发送了一个Object []类型的参数!

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有