次の Java クラス TaxCalculator は com.me パッケージに属しています。
package com.me;
public class TaxCalculator {
private Double percentBaseTax = 7.0;
public Double calculateTax(Double price, Integer percentAdditionalTax) {
return price * (this.percentBaseTax + percentAdditionalTax) / 100;
}
public Boolean isTaxFree(Double price) {
if (price < 10) {
return true;
}
return false;
}
}
|
|
Java Module で使用されるクラスがデフォルトパッケージに属していない場合、クラスをエクスポートする必要があります。それ以外の場合、実行に失敗し、JAVA:CLASS_NOT_FOUND エラーが表示されます。「リソースのエクスポート方法」を参照してください。
|
インスタンスメソッドを呼び出す手順は、次のとおりです。
-
Java Module の New 操作を使用して、後でメソッドを呼び出すオブジェクトを作成します。これにより、インスタンス化されたオブジェクトが提供され、そのメソッドの 1 つをコールできます。
-
invoke 操作をオブジェクトのいずれかのメソッドをコールするように設定します。new 操作と同様、invoke は入力パラメーターのマップを取り (メソッドに存在する場合)、対象パラメーターをサポートします。
次の例では、TaxCalculator クラスのインスタンスが作成され、taxCalculator 対象変数内に置かれます。次に、price と percentAdditionalTax を引数として取る calculateTax(Double, Integer) メソッドがコールされ、その戻り値が totalTax 変数内に置かれます。
<java:new class="com.me.TaxCalculator"
constructor="TaxCalculator()"
target="taxCalculator"/>
<java:invoke instance="#[vars.taxCalculator]"
class="com.me.TaxCalculator"
method="calculateTax(Double, Integer)"
target="totalTax">
<java:args>#[{
price: 25.5,
percentAdditionalTax: 2
}]</java:args>
</java:invoke>
メソッドのパラメーターでは、constructor="Person(java.lang.Double, java.lang.Integer)" などの完全なパッケージ名を指定できます。これは必要ありませんが、コードをより明確にしたり、Java コードに競合するクラス名がある場合に役立ちます。
Anypoint Studio では、Java Module は invoke 操作で DataSense をサポートしています。DataSense は入力引数と出力値の両方のメタデータを提供します。
この例では、DataSense は calculateTax が Number を返すことを検出するため、invoke 操作の出力メタデータは次のようになります。
args パラメーターにコンストラクターの引数を設定する場合は、マップのキーでパラメーターがコンストラクターに渡される方法を判断します。
パラメーターを名前 (price、percentAdditionalTax など) で参照するには、 -parameters コンパイラーフラグを使用して、メソッドまたはコンストラクターを含む Java クラスをコンパイルする必要があります。
クラスがこのフラグを使用してコンパイルされていない場合は、同じパラメーターが宣言された順序と arg0、arg1 のような正規名で参照されます。
<java:args>#[{
arg0: 25.5,
arg1: 2
}]</java:args>
Java クラスが Studio プロジェクトで定義されている場合、-parameters フラグを使用して Java クラスをコンパイルするように Maven コンパイラープラグインを pom.xml で設定する必要があります。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>