关于可变参数问题
Java code
package com.java.test;
public class NetworkTest
{
public void f(Character... c)
{
System.out.println("First");
}
public void f(int i, Character... c)
{
System.out.println("Second");
}
public static void main(String[] args)
{
NetworkTest test = new NetworkTest();
test.f(1, 'a');
test.f('b', 'c'); // Eclipse编译报错
}
}
针对 test.f('b','c'), Eclipse会报编译错误,如下:
The method f(Character[]) is ambiguous for the type NetworkTest
但我认为应该匹配上第一个方法 public void f(Character... c) 呀,请问这是什么原因呢?
多谢
------解决方案--------------------
刚看错了,那是因为test.f('b', 'c');
这里面的f比较模糊,编译器也不知道到底要调哪一个f方法。
因为f('b', 'c')中的'b'是可以隐身的转成int型的,所以
f(Character... c)符合,f(int i, Character... c)也符合。
不信你把其中任意一个f方法注释掉,
test.f('b', 'c')应该都不会编译报错。