可变参数列表在方法重载时出现的问题

xiayiguo 2016-01-21 12:25:56
下面这段代码为什么会出现下列错误, 调用f ('a' , 'b') 时,只有第二个 f ( ) 方法可以与之匹配,为什么说两个方法匹配?

public class OverloadingVarargs2 {
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(Character... args) {
System.out.print("second");
}
public static void main(String[] args) {
f(1, 'a');
f('a', 'b');
}
} ///:~

----------------
OverloadingVarargs2.java:13: 错误: 对f的引用不明确
f('a', 'b');
^
OverloadingVarargs2 中的方法 f(float,Character...) 和 OverloadingVarargs2 中的
方法 f(Character...) 都匹配
1 个错误
----------------
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011238052 2017-03-12
  • 打赏
  • 举报
回复
是因为“a”自动向上转为 float了
xiayiguo 2016-01-21
  • 打赏
  • 举报
回复
引用 1 楼 shixitong 的回复:
Character... args 表示可以传可变参数,可以是一个字符,也可以是字符数组,但是它只占用一个参数位置 你这边(f('a', 'b');)调用就有问题了,这个里面不代表是字符数组,只能说是两个参数 可以这样
 Character c1[]={'a','b'};
 f(c1);
明白了,谢谢大神
shixitong 2016-01-21
  • 打赏
  • 举报
回复
Character... args 表示可以传可变参数,可以是一个字符,也可以是字符数组,但是它只占用一个参数位置 你这边(f('a', 'b');)调用就有问题了,这个里面不代表是字符数组,只能说是两个参数 可以这样
 Character c1[]={'a','b'};
 f(c1);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧