---
schema_version: "1"
id: 78d0cdfc59e117dc447ce631c3ef66124bef04834b95b5e74095bcc2d7b31763
title: Null Safe
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-sdk/1.1/null-safe.md
canonical_url: https://docs.mulesoft.com/jp/mule-sdk/1.1/null-safe
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 505fe589db85672ad39f2aa99fe4635c91f67d3a960b3f3d4aedcf6275a735b9
description: MuleSoft Documentation Site
release: "1.1"
latest: false
---
# Null Safe

ユーザーがパラメーターの値を指定していないときでも ​`@Parameter`​ をインスタンス化する必要がある場合があります。次に例を示します。

```java
@Parameter
@Optional
private List<Integer> numbers;
```

`numbers`​ をコードで操作する場合は、​`NullPointerException`​ を発生させないようにするために、どこかで ​`numbers == null`​ のチェックが必要です。

SDK は ​`null`​ の代わりに空のリストを提供する ​`@NullSafe`​ などのアノテーションの使用をサポートしています。これを使用すると、SDK は値が指定されていない場合には自動的に値を作成します。 次の [サンプルコード](https://github.com/mulesoft/mule-http-connector/blob/master/src/main/java/org/mule/extension/http/internal/request/RequestSettings.java)​は、​`List`​ インターフェースに ​`@NullSafe`​ を使用します。

`@NullSafe`​ アノテーションにはいろいろな種類があります。​`List`​ インターフェースや ​`Map`​ インターフェースと一緒に使用すると、​`@NullSafe`​ はこれらのコレクションのデフォルト実装を作成します。

次の例では、POJO を null safe 型としています。

```java
@Parameter
@Optional
@NullSafe
private Foo foo;
```

ご推察のとおり、SDK は ​`Foo`​ をインスタンス化して、​`foo`​ パラメーターに割り当てることで、手動での null チェックを不要にします。

`@NullSafe`​ を POJO で使用する場合は、POJO 内で宣言するすべてのパラメーターを​_省略可能_​とする必要があります。SDK は、必須パラメーターのデフォルト値を作成できません。そのため、​`@NullSafe`​ を使用して必須パラメーターを自動的にインスタンス化することは無意味です。

パラメーターの型を使用する代わりに、特定のクラスをインスタンス化するように ​`@NullSafe`​ を設定することもできます。これは、パラメーターの型をインスタンス化できない場合 (抽象クラスやインターフェースなど) に便利です。

インスタンス化するクラスは、アノテーションで ​`defaultImplementingType`​ 属性を設定することで指定します。次に例を示します。

```java
@Parameter
@Optional
@NullSafe(defaultImplementingType = Foo.class)
private AbstractFoo foo;
```