1

のような抽象関数が欲しい

init(int... conditions);

継承されたクラスがさまざまな初期化条件を持つことができるように。必要な引数の数が少ないクラスもあれば、他のクラスよりも多くの引数を必要とするクラスもあります。

ただし、次のように個別に渡したい

init(arr[0], arr[1], arr[2]... arr[size-1]);

よりも

init(arr);

そのようなアプローチは可能ですか?そうでない場合は、配列を渡すだけのほうがよいでしょうか?


私が作成しているように見える混乱をお詫び申し上げます。

さまざまなサイズ n の配列があります。引数の数は信頼できるため、引数を渡すハードコーディングはできません。さまざまなバージョンの init メソッドに対して関数のオーバーロードを行いたくありません。これにより、init メソッドのさまざまなバージョンが約 10 個作成されるためです。

4

2 に答える 2

2

メソッドをオーバーロードする必要はありません。いわゆる を使用するだけvariable argumentsです。は、バージョン 1.5 以降の Java で使用できます。例えば:

public void init(int... conditions) { ... }

このメソッドは、次の 2 つの方法で使用できます。

  1. 配列自体を渡します。このような:

    init(配列);

  2. 各配列要素を渡します。このような:

    init(配列[0]、配列[1]、...配列[n]);

このメソッドに他の引数が必要な場合は、変数引数の前にのみメソッド シグネチャに配置する必要があることに注意してください。

于 2013-05-04T00:28:04.820 に答える