---
schema_version: "1"
id: 17a30964623c9658a57ca2541acdfd299dbd3c19105c403c793ecedfd1d4feeb
title: Java クラスの型の再利用
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.8/dataweave-type-reuse-java-classes.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-type-reuse-java-classes
source_site: docs.mulesoft.com
content_type: documentation
content_hash: d075fb057d6edb500558530f70024d442fdb08114e5f9665d0920a1ee36f0405
description: MuleSoft Documentation Site
release: "2.8"
latest: false
---
# Java クラスの型の再利用

Java クラスを読み込む場合、​`java!`​ プレフィックスがあるインポートディレクティブを使用します。プレフィックス ​`java!`​ では、Java Module ローダーを使用するように DataWeave に指示します。モジュールが読み込まれたら、コンストラクター、変数、関数をコールできます ([DataWeave を使用した Java メソッドのコール](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-java-methods)を参照)。また、クラス型を使用することもできます。DataWeave は、​`Class`​ という型名で Java クラスの型を公開します。

Java クラスは、​[「Java 値のマッピング」](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats-java#java-value-mapping)​にリストされている DataWeave 型にマップされます。 表で指定されていない Java クラスは、DataWeave で ​`JavaBean`​ として処理され、DataWeave の ​`Object`​ 型にマップされます。そのオブジェクトのキーは Java クラスのプロパティの名前と一致し、それらの値はプロパティクラスと一致する DataWeave 型に対応します。次の例は、DataWeave が Java getter からすべてのプロパティを取得する方法を示しています。

Product クラス:

package org.mycompany;


public class Product {
    private String name;
    private int price;

    public Product(String name, int price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public int getPrice() {return price;}
    public void setPrice(int price) {this.price = price;}
}

この Java クラスの型を読み込むと、次の DataWeave 型の宣言と同じ効果があります。

type Class = { name?: String | Null, price?: Number | Null }

次の例は、型 ​`Product::Class`​ を DataWeave のその他の型として使用します。関数 ​`Product::new`​ をコールして (これにより、Java クラスのコンストラクターがコールされる)、DataWeave オブジェクトを作成しても、型 ​`Product::Class`​ と同じ効果があります。 インポートディレクティブには ​`from`​ がなく、代わりに型 ​`Class`​ のプレフィックス ​`Product::`​ を使用しています。このプレフィックスにより、型をより宣言的な使用が可能になり、インポートされる他の ​`Class`​ 型との競合を回避できます。

DataWeave スクリプト:

```dataweave
%dw 2.0
output json
import java!org::mycompany::Product

var aBook: Product::Class = {name: "Learn DW", price: 123}
fun description(p: Product::Class) = "The product: $(p.name), costs: $(p.price)"

type Order = {
    product: Product::Class,
    date: LocalDateTime
}
---
{
    a: Product::new("DW lang", 321) is Product::Class,
    b: description(aBook),
    c: {product: aBook, date: |2022-12-18T14:00:00|} is Order
}
```

出力:

{
    a: true,
    b: "The product: Learn DW, costs: 123",
    c: true
}