当前位置: 代码迷 >> J2SE >> 参数列表有关问题
  详细解决方案

参数列表有关问题

热度:97   发布时间:2016-04-24 00:51:31.0
参数列表问题
public class Tree {
static void f(float i,Character...characters){
System.out.println("first");
}
static void f(Character...characters){
System.out.println("second");
}

public static void main(String[] args) {
f(1,'a');
f('a','b');

}

}
红色部分为什么无法编译通过啊

public class Tree {
static void f(float i,Character...characters){
System.out.println("first");
}
static void f(Character c,Character...characters){
System.out.println("second");
}

public static void main(String[] args) {
f(1,'a');
f('a','b');

}

}
做如上更改后仍然无法编译通过?


------解决方案--------------------
楼主请看这个程序:
Java code
public class Test1 {    static void f(float i){    }    public static void main(String[] args) {        f('a');    } }
------解决方案--------------------
根本原因我觉得就是同一个参数如'a',既可以作为Character类型被接收,也可以作为float类型被接收,所以当二者在一起,以重载的方式出现时,编译器便会报错
------解决方案--------------------
不能通过编译的原因是f('a','b')对两个方法都匹配
static void f(Character c,Character...characters){
System.out.println("second");
}
=》
static void f(char c,Character...characters){
System.out.println("second");
}
------解决方案--------------------
探讨
根本原因我觉得就是同一个参数如'a',既可以作为Character类型被接收,也可以作为float类型被接收,所以当二者在一起,以重载的方式出现时,编译器便会报错
  相关解决方案