2 h meichuan h_meichuan 于 2016.03.20 12:24 提问

[Java]关于重载方法中的可变参数列表

《Thinking in Java》第105页有一句话不理解

图片说明

如何理解你应该总是只在重载方法的一个版本上使用可变参数列表,或者压根就不是用它

5个回答

luochoudan
luochoudan   Ds   Rxr 2016.03.20 17:35
已采纳

就是当重载一个方法时,选择其中的一个重载使用可变参数,其他的避免使用,否则编译的时候容易出问题。具体的参看http://www.cnblogs.com/lanxuezaipiao/p/3190673.html

h_meichuan
h_meichuan 推荐的博文很好,谢谢
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.20 21:58

这个道理很简单,比如说你有
foo(int x, int ... args)

foo(int x, int y, int ... args)
两个重载形式
那么
foo(1,2,3)到底调用哪一个呢?
如果你有很多重载形式,那么你自己会被自己搞晕了。所以,你应该尽量确保你可变参数的重载形式和别的重载不存在二义性。

u014229472
u014229472   2016.03.20 12:34

两个f()应该只用一个或不用 我是这么理解的

h_meichuan
h_meichuan 但是下面那个说可以编译成功的不是两个f()都用了可变参数列表吗
2 年多之前 回复
weixin_32769751
weixin_32769751   2016.03.20 13:33

可变参数的第一个参数类型不同,而且要放在第二个参数上,你把可变参数理解成数组

enpterexpress
enpterexpress   Rxr 2016.03.20 21:55

就是根据参数判断调用那个方法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java可变参数关于参数列表含可变参数的方法重载的注意点
可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。 void f(Character... args){}
Java的可变参数列表
1.什么是Java的可变参数列表 请阅读下面的示例代码: public class Main { public void printf(String... args) { for (String s : args) { System.out.println(s); } } } 不难发现printf()方法的参数 是这样String... args 的形式 类似这
Java重载重写与实现方法规则心得体会
这几天在实训过程中做到了一个题,这个题目问的是 非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致。这句话是错误的。然后在做错以后自己总结一下重载 重写 和实现的几个点。 重载:方法名一致即可,访问修饰符、返回值类型无关,然后不同的重载方法参数列表的参数的顺序,类型,数量进行变换即可。 重写:重写方法的访问修饰符可以不同,但访问权限
java面试题2--方法重写与重载、this和super关键字
1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写:      在子类中,出现和父类中一模一样的方法声明的现象。 方法重载:      同一个类中,出现的方法名相同,参数列表不同的现象。 方法重载能改变返回值类型,因为它和返回值类型无关。 Override:方法重写 Overload:方法重载面试题中很容易混淆这两个概念 2:this关键字和super关
Java类中方法重载
Java类中方法重载 在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading)。 参数列表又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。 重载是面向对象的一个基本特性。 下面看一个详细的实例。 1 public class De
Java可变参数方法重载时要注意的几个问题
转载自:http://www.blogjava.net/rongxh7/archive/2010/04/18/318698.html JDK1.5引进了方法的可变参数,受到许多开发人员的青睐。有了这种机制,我们可以写出类似于JavaScript的arguments那样的带任意多个参数的方法。Java的可变参数,可用于普通方法上,也可以用于构造方法上,大大增大了我们所写方法的适用范围。
Java的方法重载规则
Java中的方法,即函数(文中我们统称之为“方法”),是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能。而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值传入子程序,供计算机处理;所谓出口,就是指函数的返回值,在程序段执行之后,由此返回值将值传回给调用它的程序。
java中方法的重载(重载的定义、特点和好处)
定义:一个类中含两个以上同名的方法,他们之间就构成重载 特点: 1、必须是两个以上同名的方法 2、方法之间的参数组合必须不同(参数的数目不同或者参数的类型不同) 3、方法的返回值不能作为判断方法之间是否构成重载的依据 好处: 大大简化啦的类调用者的代码,让我们感觉类有一种自动化调用的功能,而没有增加类创建的代码
关于java重载(重载方法匹配优先级)
首先看一段代码 public class Overload { public static void sayHello(Object arg){ System.out.println("hello object"); } public static void sayHello(int arg){ System.out.println("hello int"); } public
java 函数的重载特点
class FunctionDemo {     /*函数的重载特点:     1、在同一个类中     2、同名函数     3、只要他的参数个数 or  者参数类型不同即可。     4、函数定义名字根据功能定义     5、函数的重载和返回值类型无关     6、java是严谨性语言,如果函数出现的调用不确定性,会编译失败。     */     public s