您的位置:首页 > 编程语言 > Java开发

Java变长参数应该注意的问题

2010-10-17 08:59 330 查看
从Java SDK 5开始,Java就支持了变长参数,但是在使用时应该注意如下问题:

1、变长参数只能放在最后。

2、如果出现重载情况,应该注意模糊性。

例如:

class VarArgs {

static void vaTest(int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");

for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}

static void vaTest(boolean ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");

for(boolean x : v){
System.out.print(x+" ");
}
System.out.println();
}

static void vaTest(String msg,int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");

for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}

}

这种情况下是不会出现异常的,但是下面的情况就会出现编译时错误了:

class VarArgs4 {

static void vaTest(int ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");

for(int x : v){
System.out.print(x+" ");
}
System.out.println();
}

static void vaTest(boolean ...v){
System.out.print("vaTest(int ...):Number of args:"+v.length+"Contents");

forboolean x : v){
System.out.print(x+" ");
}
System.out.println();
}

}

对于varArgs4的重载是完全正确的,但是去编译不通过:
vaTest();//Error:Ambiguous!
本文出自 “有思想的代码” 博客,请务必保留此出处http://wujuxiang.blog.51cto.com/2250829/406801
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: