---
schema_version: "1"
id: 4e4c21b735fe953ea9b09f799d796710c2e931afe5c69da08637c3ed0b643dd6
title: クラスのインスタンスのテスト
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/java-module/1.2/java-instanceof.md
canonical_url: https://docs.mulesoft.com/jp/java-module/1.2/java-instanceof
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 3dfb1f98b80b47420917b196e65a7b79420a41a2a445f6423f5f1b5c3af8ff89
description: MuleSoft Documentation Site
release: "1.2"
latest: false
---
# クラスのインスタンスのテスト

Java Module には、オブジェクトがクラスのインスタンスかどうかをテストする ​`Validate type`​ 操作があります。この操作は、クラスのサブタイプを受け入れるか拒否するように設定することもできます。​`true`​ の場合、操作はペイロードを変更せず、フローは実行を続行します。それ以外の場合、操作はエラーをスローしてフローを中断し、制御を​[エラーハンドラー](https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept#error-handlers)​に渡します。

## [](#validate-type-操作)Validate Type 操作

この例は、​`Person`​ クラスを定義します。

```java
package com.me;

public class Person {

    private String name;
    private Integer age;

    public Person() {
        this.name = "Max Mule";
        this.age = 10;
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
```

この例は、​`Person`​ クラスを拡張する ​`Employee`​ クラスを定義します。

```java
package com.me;

public class Employee extends Person {

    private String company;

    public Employee(String name, Integer age, String company) {
        super(name, age);
        this.company = company;
    }
}
```

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Java Module で使用するクラスはエクスポートする必要があります (デフォルトパッケージに属していない場合)。エクスポートしないと、実行に失敗し、JAVA:CLASS_NOT_FOUND​ エラーが表示されます。​<a href="https://docs.mulesoft.com/mule-runtime/latest/how-to-export-resources" class="xref page">「リソースのエクスポート方法」</a>​を参照してください。</p>
</div>
</td>
</tr>
</tbody></table>

オブジェクトが特定のクラスに属しているかどうかを確認するには、オブジェクトのインスタンスが必要です。 そのためには、​[`new`​ 操作](https://docs.mulesoft.com/jp/java-module/1.2/java-create-instance)​をコールして ​`Employee`​ オブジェクトを作成し、​`jane`​ 変数内に置きます。

```xml
<java:new class="com.me.Employee"
    constructor="Employee(String, Integer, String)"
    target="jane">
    <java:args>#[{
      name: 'Jane Avi',
      age: 28,
      company: MuleSoft
    }]</java:args>
</java:new>
```

オブジェクトが ​`Employee`​ クラスに属する ​`vars.jane`​ に保存されているかどうかを確認するには、​`Validate type`​ 操作を使用します。

```xml
<java:validate-type class="com.me.Employee" instance="#[vars.jane]" />
```

この場合、オブジェクトは ​`Employee`​ のインスタンスであるため、フローは通常どおり実行を続行し、ペイロードは変更されません。

### [](#サブタイプ-継承-の確認)サブタイプ (継承) の確認

`Validate type`​ 操作には ​`Accept subtypes`​ パラメーターがあります。このパラメーターは、操作がクラスのすべてのサブクラスを受け入れるかどうかを示します。 このパラメーターには ​`true`​、​`false`​、または式を指定可能で、省略した場合はデフォルトで ​`true`​ になります。

引き続き前記の例を使用すると、​`vars.jane`​ 内のオブジェクトは ​`Person`​ クラスを拡張する ​`Employee`​ クラスに属します。つまり、​`Employee`​ は ​`Person`​ のサブタイプになります。そのため、この例を実行すると ​`true`​ に解決され、フローは通常どおり実行されます。

```xml
<java:validate-type
    class="com.me.Person"
    instance="#[vars.jane]"
    acceptSubtypes="true" />
```

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content"><code>Accept subtypes</code>​ パラメーターを省略すると、この値はデフォルトで ​<code>true</code>​ になります。</td></tr></tbody></table>

前のコードは次と同等です。

```xml
<java:validate-type
    class="com.me.Person"
    instance="#[vars.jane]" />
```

ただし、​`Accept subtypes`​ を ​`false`​ に設定するとします。

```xml
<java:validate-type
    class="com.me.Person"
    instance="#[vars.jane]"
    acceptSubtypes="false" />
```

実行中、操作はエラーをスローしてフローを中断し、制御を​[エラーハンドラー](https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept)​に渡します。

## [](#dataweave-での-validate-type-関数)DataWeave での Validate Type 関数

この例では、Java Module で、オブジェクトがクラスのインスタンスの場合に ​`true`​ または ​`false`​ を返す DataWeave ​`isInstanceOf()`​ 関数を提供します。​`Validate type`​ 操作とは異なり、​`false`​ に評価されたときにエラーはスローされません。

```xml
<choice>
    <when expression="#[Java::isInstanceOf(vars.jane, com.me.Employee)]">
        <flow-ref name="routeToCompany" />
    </when>
</choice>
```

## [](#関連情報)関連情報

- [メソッドの呼び出し](https://docs.mulesoft.com/jp/java-module/1.2/java-invoke-method)
- [Throwable の処理](https://docs.mulesoft.com/jp/java-module/1.2/java-throwable)