排他的省略可能パラメーター

同じものを何通りかの方法で設定できるモジュールを開発していて、その中の 1 つだけを使用する必要があるケースでは、次のルールの設定が必要な場合もあります。

  • 特定のパラメーターセットから一度に 1 つだけを使用すること。

@ExclusiveOptionals​ を使用することで、この制約を適用することができます。

@ExclusiveOptionals

@ExclusiveOptionals​ アノテーションは、​@ParameterGroup​ として使用される種別でのみ使用できます (詳細は​​パラメーター​​を参照してください)。

@ExclusiveOptionals
public class ExclusiveOptionalsExample {

    @Parameter
    private String requiredParameter;

    @Parameter
    @Optional
    private String optionalParameter;

    @Parameter
    @Optional
    private String anotherOptionalParameter;
}

アノテーション名が示すように、排他的な制約は省略可能なパラメーターにのみ適用されます。そのため、​requiredParameter​ を ​optionalParameter​ や ​anotherOptionalParameter​ と同時に設定することはできますが、​optionalParameter​ と ​anotherOptionalParameter​ を同時に設定すると、エラーがスローされます。

ヒント: @ExclusiveOptionals​ でアノテーションが付加されたオブジェクトの内部では、パラメーターをいくつでも設定できますが、同時に設定できる省略可能なパラメーターは 1 つだけです。

最低 1 つのパラメーターを適用する

省略可能なパラメーターを正確に 1 つ (1 つのみ) 設定する必要があるケースがあります。この要件は、​@ExclusiveOptionals(isOneRequired = true)​ を使用して設定できます。次に例を示します。

@ExclusiveOptionals(isOneRequired = true)
public class OneRequiredExample {

    @Parameter
    private String requiredParameter;

    @Parameter
    @Optional
    private String optionalParameter;

    @Parameter
    @Optional
    private String anotherOptionalParameter;
}

そのため、​requiredParameter​ を設定して、省略可能なパラメーターの ​optionalParameter​ または ​anotherOptionalParameter​ を設定しないと、エラーがスローされます。