Item 53可変パラメータは慎重に使用してください
5478 ワード
「可変パラメータ」(varargs)メールでは、指定したタイプのパラメータを0つ以上受信できます.
可変パラメータメソッドを呼び出すと、まずパラメータの個数と長さが同じ配列を作成し、パラメータをその配列に格納してから、可変パラメータメソッドに渡します.
入力intパラメータの和を計算する可変パラメータメソッドを次に示します.sum(1,2,3)は6を返し,sum()は0を返す.
コード53-1簡単な可変パラメータの使用例
コードも乱れています.argsを明示的に検証し、minの初期値をintegerに設定する必要があります.MAX VALUEに設定しない限り、for-each文は使用できません.
もっといい方法がある.
次のコードのように、2つのパラメータを受ければいいです.すなわち,1番目は通常パラメータ,2番目は可変パラメータを受け入れると,前の問題は消える.
性能に敏感な場合、可変パラメータが障害になる可能性があります.
可変パラメータメソッドは、呼び出すたびに配列を再割り当てして初期化します.幸いなことに、この費用は負担できませんが、可変パラメータの柔軟性が必要な場合に選択できる良いモードがあります.
買収数が一定でない方法を定義する必要がある場合は、可変買収を使用する必要があります.メソッドを定義する場合は、必要なパラメータを可変パラメータの前に配置し、可変パラメータを使用する場合はパフォーマンスの問題を考慮します.
可変パラメータメソッドを呼び出すと、まずパラメータの個数と長さが同じ配列を作成し、パラメータをその配列に格納してから、可変パラメータメソッドに渡します.
入力intパラメータの和を計算する可変パラメータメソッドを次に示します.sum(1,2,3)は6を返し,sum()は0を返す.
コード53-1簡単な可変パラメータの使用例
static int sum(int... args) {
int sum = 0;
for (int arg : args)
sum += arg;
return sum;
}
1つまたは複数のコード53−2パラメータを必要とする可変パラメータ方法であって、エラー例を実装する!static int min(int... args) {
if (args.length == 0)
throw new IllegalArgumentException("인수가 1개 이상 필요합니다.");
int min = args[0];
for (int i = 1; i < args.length; i++)
if(args[i] < min)
min = args[i];
return min;
}
この方法にはいくつかの問題があります.最も深刻な問題は、コンパイルタイプではなく0個の引数のみを入力すると、実行タイプが失敗することです.コードも乱れています.argsを明示的に検証し、minの初期値をintegerに設定する必要があります.MAX VALUEに設定しない限り、for-each文は使用できません.
もっといい方法がある.
次のコードのように、2つのパラメータを受ければいいです.すなわち,1番目は通常パラメータ,2番目は可変パラメータを受け入れると,前の問題は消える.
static int min( int firstArg, int... remainingArgs) {
int min = firstArg;
for (int agr: remainingArgs)
if(arg < min)
min = arg;
return min;
}
可変パラメータは、パラメータの数が不確定な場合に便利です.性能に敏感な場合、可変パラメータが障害になる可能性があります.
可変パラメータメソッドは、呼び出すたびに配列を再割り当てして初期化します.幸いなことに、この費用は負担できませんが、可変パラメータの柔軟性が必要な場合に選択できる良いモードがあります.
コアの整理
買収数が一定でない方法を定義する必要がある場合は、可変買収を使用する必要があります.
Reference
この問題について(Item 53可変パラメータは慎重に使用してください), 我々は、より多くの情報をここで見つけました https://velog.io/@wlghsp/Item-53-가변인수는-신중히-사용하라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol