JAVAメソッド宣言のパラメータの3つの小数点
オリジナル記事、転載は明記してください.
私たちは次の方法の声明を見ます.
パラメータの中の3つの小数点はどういう意味ですか.これはメソッドの自動リロードを表します.つまり、私たちの次のコードは合法的です.
これは問題です.もし私たちのパラメータ自体が配列だったら、どうしますか.次のコードがあります.
私たちは次の方法の声明を見ます.
public static void tst( Object... initargs){
System.out.println(initargs.length);
System.out.println(initargs[0]);
}
パラメータの中の3つの小数点はどういう意味ですか.これはメソッドの自動リロードを表します.つまり、私たちの次のコードは合法的です.
tst();//0,
tst(1);//1,1
tst(1,2);//2,1
tst(1,2,3);//3,1
その実現原理はinitargsを自動的にObject[]配列に変換することである.これは問題です.もし私たちのパラメータ自体が配列だったら、どうしますか.次のコードがあります.
String[] strArr = new String[2];
strArr[0]="a";
strArr[1]="b";
tst(strArr);//2,a
可见,如果传入的是数组,则Java默认就不再去转换Object数组了,也就会造成参数错误。解决办法就是,再初始化一个Object[]数组,传入函数,如下代码所示:
String[] strArr = new String[2]; strArr[0]="a"; strArr[1]="b"; Object[] args = new Object[1]; args[0]=strArr; tst(args);//1,{“a”,"b"}