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

问题描述

[Java]关于重载方法中的可变参数列表
《Thinking in Java》第105页有一句话不理解

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

解决方案

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

解决方案二:
这个道理很简单,比如说你有
foo(int x int ... args)

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

解决方案三:
两个f()应该只用一个或不用 我是这么理解的

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

解决方案五:
就是根据参数判断调用那个方法

时间: 2024-10-30 19:36:23

java-[Java]关于重载方法中的可变参数列表的相关文章

浅谈Java中的可变参数_java

可变参数 可变参数就是一个方法可以接收任意多个参数!例如:fun().fun(1).fun(1,1).fun(1,1,1).你可能认为这是方法重载,但这不是重载,你想想重载能重载多少个方法,而fun()方法是可以传递任何个数的参数,你能重载这么多个方法么? 2.1 定义可变参数方法 public voidfun(int- arr) {} 上面方法fun()的参数类型为int-,其中"-"不是省略号,而是定义参数类型的方式.参数arr就是可变参数类型.你可以把上面代码理解为:public

java web-Javaweb在Java类的main方法中无法通过Proxool连接数据库

问题描述 Javaweb在Java类的main方法中无法通过Proxool连接数据库 Javaweb在Java类的main方法中无法通过Proxool连接数据库,报SQLException,找不到驱动,同样的代码启动tomcat后在服务器中能运行??????? 解决方案 有两个可能,一个是jar包没有引入全:还有一个就是配置文件的编码方式,把配置文件打开看看有没有乱码

可变参数列表-Java SE5新特性(转)

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持有一个可变参数.因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项. 可变参数的特点:(1)只能出现在参数列表的最后: (2)...位于变量类型和变量名之间,前后有无空格都可以:(3)调用可变参数的方法时,编译

Thinking in java 可变 参数列表问题,请各位帮忙解决。

问题描述 Thinking in java 可变 参数列表问题,请各位帮忙解决. public class OverloadingVarargs3 { static void f(float i Character... args) { System.out.println(""first""); } static void f(char c Character... args) { System.out.println(""second&quo

C语言中实现可变参数函数

通过stdarg.h头文件为函数提供了定义可变参数列表的能力.声明一个可变参数的函数类似: void f1(int n,...); 其中n表示参数列表个数,而用省略号来表示未知参数列表.stdarg.h中提供了一个va_list类型,用于存放参数.一个大概的使用过程类似: void f1(int n,...) {    va_list ap;    va_start(ap,n);   //初始化参数列表    double first=va_arg(ap,double);  //取第一个参数  

spring mvc-想把用户名存在session中 在方法中加request参数后运行报错 求指教~

问题描述 想把用户名存在session中 在方法中加request参数后运行报错 求指教~ 我用的是spring+hibernate~ 修改后: public class LoginAction extends SimpleFormController{ private Login login; private String viewPage; private String successPage; //实现onSubmit()方法 public ModelAndView onSubmit(Ob

Swift中的可变参数函数介绍_Swift

可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了.在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 复制代码 代码如下: NSString *name = @"Tom"; NSDate *date = [NSDate date]; NSString *string = [NSString stringWithFormat:                 @"Hell

wpf dispatcher.begininvoke与匹配的重载方法具有一些无效参数

问题描述 wpf dispatcher.begininvoke与匹配的重载方法具有一些无效参数 wpf dispatcher.begininvoke与匹配的重载方法具有一些无效参数,我在另外一个项目里面用这个方法就有,请问这是为什么呢? 解决方案 两个项目的.net framework 版本一样么?

C# 编辑代码时提示错误:与其最匹配的重载方法具有一些无效参数

问题描述 C# 编辑代码时提示错误:与其最匹配的重载方法具有一些无效参数 方法: public void plusOne(ref int numX,ref int numY) { if(numY<8) { numY += 1; } else { numX = numX + 1; numY = 0; } } public void cel() { int num1=1; int num2=1; plusOne(num1,num2);//此处显示错误:与其最匹配的重载方法具有一些无效参数 } 解决方