读书人

关于可变参数有关问题

发布时间: 2012-04-23 13:17:38 作者: rapoo

关于可变参数问题

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')应该都不会编译报错。

读书人网 >J2SE开发

热点推荐