---
schema_version: "1"
id: 12c74502add7b37e3810299eb1ad72d3f6d5da87eff86717f4186334b0eb22f1
title: Java 形式
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-formats-java.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-java
source_site: docs.mulesoft.com
content_type: documentation
content_hash: b8928aff00ec7fcd597a560809d4928282d2499449b4499d4e833e10c850f437
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# Java 形式

MIME タイプ: `application/java`​

ID: `java`​

Java データ形式の場合、DataWeave は Java 値を DataWeave 値にマップしようとします。ほとんどの場合、これは DataWeave と Java のセマンティックを照合することで行われます。

## [](#java-値のマッピング)Java 値のマッピング

次の表に、Java クラスと DataWeave の型のマッピングを示します。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Java クラス</th>
<th class="tableblock halign-left valign-top">DataWeave</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.lang.String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Enum</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Class</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>UUID</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>CharSequence</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Char</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.sql.Clob</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.io.Reader</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>int</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>long</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>double</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>short</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>BigInteger</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>BigDecimal</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>AtomicInteger</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>AtomicLong</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>AtomicBoolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.Collection</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Array</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.lang.Iterable</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Array</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.Iterator</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Array</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.Map</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Object</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.Optional</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Null</code>​ または ​<code>Value</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>byte[]</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Binary</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.lang.InputStream</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Binary</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>byte</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Binary</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.lang.File</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Binary</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.LocalDateTime</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>LocalDateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.sql.Timestamp</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>LocalDateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.sql.Date</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>LocalDateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.ZonedDateTime</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>DateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.LocalTime</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>LocalTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.OffsetTime</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Time</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.LocalDate</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Date</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.time.ZoneOffset</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>TimeZone</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.Calendar</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>DateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>java.util.XMLGregorianCalendar</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>DateTime</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>*[]</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Array</code>​</p></td>
</tr>
</tbody>
</table>

<table><tbody><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content">表に存在しない Java クラスは、DataWeave で ​<code>JavaBean</code>​ として処理され、​<code>Object</code>​ 型としてマップされます。この場合、すべてのプロパティが Java getter から取得されます。</td></tr></tbody></table>

## [](#metadata)メタデータ

DataWeave では、Java 形式の ​`^class`​ メタデータがサポートされています。

すべての Java オブジェクトは、クラスに関連付けられます。DataWeave は、クラスをメタデータプロパティにマップして、この関連付けを保持します。

`payload.^class`​ は、​`payload`​ のクラスの名前を返します。

Java ライターは、メタデータプロパティを使用して、DataWeave 値をマップする Java クラスを検出します。つまり、DataWeave はメタデータプロパティを使用して、特定の DataWeave 値から作成される Java クラスを決定します。たとえば、式 ​`output application/java --- now() as DateTime {class: "java.util.Calendar"}`​ では、​`java.util.Calendar`​ が作成されます。

## [](#format_enum)Enum カスタム型

Java 形式では、​`Enum`​ カスタム型がサポートされています。​`java.util.Map`​ に Java ​`enum`​ 値を配置するには、DataWeave Java Module では、​`Enum`​ と呼ばれるカスタム型を定義します。 このカスタム種別により、特定の文字列を指定の ​`enum`​ 種別の名前として処理できます。Enum の Java クラス名を指定する場合、​`class`​ メタデータプロパティを使用する必要があります (例: `{gender: "Female" as Enum {class: "org.mycompany.Gender"}}`​)。

## [](#format_examples)例

次の例は、Java 形式の使用方法を示しています。

- [例: Java プロパティの値にアクセスする](#example1)​
- [例: Customer オブジェクトを作成する](#example2)​
- [例: 汎用型を使用する](#example3)

### [](#クラス定義)クラス定義

この Java の例では、次のクラス定義を使用します。

- [`User`](#class_user)​
- [`Customer`](#class_customer)​ (​`User`​ を拡張)

User クラス:

```java
class User {
    private String name;
    private String lastName;

    public User(){

    }

    public User(String name, String lastName){
        this.name = name;
        this.lastName = lastName;
    }

    public void setName(String name){
        this.name = name;
    }

     public void setLastName(String lastName){
        this.lastName = lastName;
    }

    public String getName(){
        return name;
    }

    public String getLastName(){
        return lastName;
    }
}
```

次のクラスは ​`User`​ を拡張します。

Customer クラス:

```java
import java.util.Calendar;
class Customer extends User {
    private Calendar expirationDate;
    private User salesRepr;

    public User(){

    }

    public User(String name, String lastName,Calendar expirationDate){
        super(name,lastName);
        this.expirationDate = expirationDate;
    }

    public void setSalesRepr(User salesRepr){
        this.salesRepr = salesRepr;
    }

    public User getSalesRepr(){
        return this.salesRepr;
    }

    public void  setExpirationDate(Calendar expirationDate){
        this.expirationDate = expirationDate;
    }

    public Calendar getExpirationDate(){
        return this.expirationDate;
    }
}
```

### [](#example1)例: Java プロパティの値にアクセスする

次の例は、Java プロパティの値にアクセスする方法を示しています。

#### [](#入力)入力

`User`​ 値は、DataWeave スクリプトへの入力ペイロードとして機能します。

```groovy
new User("Leandro", "Shokida")
```

#### [](#取得元)取得元

この DataWeave スクリプトは、入力値を JSON に変換します。

```dataweave
output application/json
---
{
    a: payload.name,
    b: payload.lastName
}
```

#### [](#出力)出力

出力は、キー-値ペアを含む JSON オブジェクトになります。値は、入力 ​`User`​ オブジェクトの ​`name`​ および ​`lastName`​ 値になります。

```json
{
    "a": "Leandro",
    "b": "Shokida"
}
```

### [](#example2)例: Customer オブジェクトを作成する

次の例は、​`Customer`​ クラスのインスタンスを作成する方法を示しています。このスクリプトは、JSON 形式と MIME タイプでオブジェクトを出力します。

クラスは親クラス定義から推定されるため、内部プロパティのクラスを指定する必要はありません。

```dataweave
output application/json
---
{
    name: "Tomo",
    lastName: "Chibana",
    expirationDate: now(),
    salesRepr: {
        name: "Mariano",
        lastName: "de Achaval",
    }
} as Object {class: "Customer"}
```

### [](#example3)例: 汎用型を使用する

この例では、クラス名の汎用型のサポートを使用して、​`User`​ オブジェクトの ​`java.util.ArrayList`​ を作成します。

各インスタンスで汎用型を使用してクラスを指定する必要はありません。クラスはリストの汎用型から取得されます。

```dataweave
output application/json
---
[{
    name: "Tomo",
    lastName: "Chibana"
},
{
    name: "Ana",
    lastName: "Felissati"
},
{
    name: "Leandro",
    lastName: "Shokida"
}
] as Array {class: "java.util.ArrayList<User>"}
```

## [](#properties)Configuration のプロパティ

DataWeave では、Java 形式の次の設定プロパティがサポートされています。

### [](#reader-のプロパティ)Reader のプロパティ

Java データのリーダープロパティはありません。

### [](#writer-のプロパティ)Writer のプロパティ

Java 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 50.0002%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">型</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>duplicateKeyAsArray</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>writeAttributes</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#mime_type)サポートされる MIME タイプ

Java 形式では、次の MIME タイプがサポートされています。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 100%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">MIME タイプ</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>*/java</code>​</p></td>
</tr>
</tbody>
</table>

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

- [DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-java-methods)