Java のオプションのパラメーター
オプションのパラメーターを使用すると、メソッドは可変数の引数を受け取ることができます。 Java でこの動作を実装するには、いくつかの方法があります。
メソッドのオーバーロード
同じ名前で引数リストが異なる複数のメソッドを作成します。オプションのパラメーターは省略できます。
void foo(String a, Integer b) { //... } void foo(String a) { foo(a, 0); // Default value for b } foo("a", 2); foo("a");
Varargs
オプションのパラメーターを指定するには、可変長の引数リストを使用します。オプションのパラメーターのタイプは同じである必要があります。
void foo(String a, Integer... b) { Integer b1 = b.length > 0 ? b[0] : 0; Integer b2 = b.length > 1 ? b[1] : 0; //... } foo("a"); foo("a", 1, 2);
Nulls
オプションのパラメーターが null であることを許可します。メソッド本体の null 値を確認します。
void foo(String a, Integer b, Integer c) { b = b != null ? b : 0; c = c != null ? c : 0; //... } foo("a", null, 2);
Optional Class
Java 8 の Optional クラスを使用して、デフォルト値を持つパラメーターを示します。
void foo(String a, Optional<Integer> bOpt) { Integer b = bOpt.isPresent() ? bOpt.get() : 0; //... } foo("a", Optional.of(2)); foo("a", Optional.empty());
ビルダーパターン
作成オプションのパラメーターの流暢なセッターを備えた別個のビルダー クラス。
class Foo { private final String a; private final Integer b; Foo(String a, Integer b) { this.a = a; this.b = b; } //... } class FooBuilder { private String a = ""; private Integer b = 0; FooBuilder setA(String a) { this.a = a; return this; } FooBuilder setB(Integer b) { this.b = b; return this; } Foo build() { return new Foo(a, b); } } Foo foo = new FooBuilder().setA("a").build();
マップ
マップを使用して、名前と値のペアでオプションのパラメーターを渡します。
void foo(Map<String, Object> parameters) { String a = ""; Integer b = 0; if (parameters.containsKey("a")) { a = (String) parameters.get("a"); } if (parameters.containsKey("b")) { b = (Integer) parameters.get("b"); } //... } foo(Map.of("a", "a", "b", 2, "d", "value"));
これらのアプローチは、特定の要件に合わせて組み合わせることができます。
以上がJava でオプションのパラメータを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。