0

在我的程序中,我有一个方法如下;

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

我的要求是;

  • 字幕数和 subtitleValues 必须相等。用户可以发送任意数量的字幕和字幕值,但正如我所说的,字幕和字幕值的数量相等。

我不想同时接受这两个参数并检查它们在foo函数中的计数,并说由于字幕和 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

创建一个包含 subtitle、subtitleValue 对的类。让您的方法接受此类实例的可变参数(或列表或数组)。

于 2012-10-01T07:43:41.177 回答
0

在这种情况下,您应该创建代表字幕的可能单独的类Subtitle。并创建相应的构造函数或方法来一一添加字幕。

然后将您的 foo 方法改写为:

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