Flex Gateway新着情報
Governance新着情報
Monitoring API Managerユーザーがパラメーターの値を指定していないときでも @Parameter
をインスタンス化する必要がある場合があります。次に例を示します。
@Parameter
@Optional
private List<Integer> numbers;
numbers
をコードで操作する場合は、NullPointerException
を発生させないようにするために、どこかで numbers == null
のチェックが必要です。
SDK は null
の代わりに空のリストを提供する @NullSafe
などのアノテーションの使用をサポートしています。これを使用すると、SDK は値が指定されていない場合には自動的に値を作成します。
次の サンプルコードは、List
インターフェースに @NullSafe
を使用します。
@NullSafe
アノテーションにはいろいろな種類があります。List
インターフェースや Map
インターフェースと一緒に使用すると、@NullSafe
はこれらのコレクションのデフォルト実装を作成します。
次の例では、POJO を null safe 型としています。
@Parameter
@Optional
@NullSafe
private Foo foo;
ご推察のとおり、SDK は Foo
をインスタンス化して、foo
パラメーターに割り当てることで、手動での null チェックを不要にします。
@NullSafe
を POJO で使用する場合は、POJO 内で宣言するすべてのパラメーターを省略可能とする必要があります。SDK は、必須パラメーターのデフォルト値を作成できません。そのため、@NullSafe
を使用して必須パラメーターを自動的にインスタンス化することは無意味です。
パラメーターの型を使用する代わりに、特定のクラスをインスタンス化するように @NullSafe
を設定することもできます。これは、パラメーターの型をインスタンス化できない場合 (抽象クラスやインターフェースなど) に便利です。
インスタンス化するクラスは、アノテーションで defaultImplementingType
属性を設定することで指定します。次に例を示します。
@Parameter
@Optional
@NullSafe(defaultImplementingType = Foo.class)
private AbstractFoo foo;