日期:2014-05-20  浏览次数:20749 次

如何写一个任意长度输出的重载函数?
本帖最后由 elemusic 于 2014-03-07 14:34:22 编辑
我想写一个类似
System.out.println的函数,就是把名字缩短一下,
比如我直接打trace(参数1...参数n)就可以输出,我试着这样写但是报错
The method trace(double[]) is ambiguous for the type xxx

trace(3, 2, 1);
public void trace(double... msg) {
for(int i = 0; i < msg.length; ++i) {
System.out.print(msg[i]);
}
System.out.print("\n");
}
public void trace(float... msg) {
for(int i = 0; i < msg.length; ++i) {
System.out.print(msg[i]);
}
System.out.print("\n");
}
public void trace(int... msg) {
for(int i = 0; i < msg.length; ++i) {
System.out.print(msg[i]);
}
System.out.print("\n");
}

------解决方案--------------------
trace(3, 2, 1);
3,2,1定义不明确,可认为是整形或浮点型,加上后缀即可:
trace(3d, 2d, 1d);
trace(3f, 2f, 1f);