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

关于可变参数有关问题

热度:106   发布时间:2016-04-24 01:29:43.0
关于可变参数问题
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')应该都不会编译报错。
  相关解决方案