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) 呀,请问这是什么原因呢?
多谢
解决方案 »
- 线程问题,关于synchronized
- 获取短信字符的数据结构
- 代码问题,想做个可以多次判断的,但每次判断结束后,总输出两行不想要的东西。
- jbuilder的调试问题。用了断点进行调试,但是Add Watch 是灰色的不可用,请问怎么做?
- 候杰翻译的自变量到底是不是变量的意思?
- 小弟发现一个很基础,但是不好玩的问题,关于switch控制结构的。
- Java文件问题(JFileChooser)!
- 哪位大哥能简单介绍一下VC,MFC,VB,Delphi,C++ Builder,Kylix,ASM???
- vj中是不是不能直接在applet中draw?
- java 2 基础类,哪里有完整的说明?
- Arraylist 调用 isempty 与size抛出空指针异常
- 取值,写文件
你这个2个参数 就取找第二个 f(); 但是第一个参数是int,所以就报错
这里面的f比较模糊,编译器也不知道到底要调哪一个f方法。
因为f('b', 'c')中的'b'是可以隐身的转成int型的,所以
f(Character... c)符合,f(int i, Character... c)也符合。不信你把其中任意一个f方法注释掉,
test.f('b', 'c')应该都不会编译报错。
public void f(int i, Character... c)
这两个方法是进行了重载, 小弟认为test.f('b', 'c')应该去匹配地一个才对,但为什么报错呢?
结贴