0

私のプログラムには、以下の方法があります。

private void foo(String title, String[] subtitles, int ... subtitleValues)

私の要件は;

  • 字幕の数とsubtitleValuesは等しくなければなりません。ユーザーは任意の数の字幕と字幕値を送信できますが、前述したように、同じ数の字幕とsubtitleValuesを送信できます。

両方の引数を取り、関数でそれらのカウントを確認したくありませんfoo。また、subtitlesとsubtitleValuesが等しくないためにテーブルを作成できないと言います。私が欲しいのは; ユーザーが等しくない引数を送信するのを防ぎます。どうやってやるの?

前もって感謝します

PS:適切なタイトルが見つかりませんでしたので、お持ちの場合は、お気軽に変更してください。

4

3 に答える 3

4

このようにすることはできません。メソッドを誤って呼び出すのを難しくするためにできることは、次のようなビルダーに流暢なAPIを使用することです

class FooBuilder {
  public static FooBuilder withTitle(String title);
  public FooBuilder withSubtitle(String subtitle, int subtitleValue);
  public Foo build();
}

簡潔にするために実装を省略しました。次に、次のように呼び出すことができます。

Foo foo = FooBuilder.withTitle("MyTitle").withSubtitle("st1", 1).withSubtitle("st2", 2).build();
于 2012-10-01T07:46:46.397 に答える
2

字幕とsubtitleValueのペアを含むクラスを作成します。このクラスのインスタンスのvararg(またはリストまたは配列)をメソッドに受け入れさせます。

于 2012-10-01T07:43:41.177 に答える
0

この場合、字幕を表す別のクラスSubtitleを作成する必要があります。そして、字幕を1つずつ追加するための適切なコンストラクターまたはメソッドを作成します。

次に、fooメソッドを次のように言い換えます。

private void foo(String title, List<Subtitle> subtitles)
于 2012-10-01T07:44:57.863 に答える