メイン コンテンツをスキップする 補完的コンテンツへスキップ

式内でJava関数を呼び出し

Java関数呼び出しとは、Javaクラスのメソッド(静的メソッド)またはJavaオブジェクトへの呼び出しであり、java:callというキーワードを使ってデータ整形式内で直接使用できます。 Java関数呼び出しを有効にする場合は、[Preferences] (環境設定) > Talend > [Hierarchical Mapper] (階層マッパー)[Enable java function calls in DSQL Maps] (DSQLマップでJava関数呼び出しを有効化)チェックボックスをオンにする必要があります。

静的Javaメソッドを呼び出し

静的メソッドを呼び出す場合は、java:call(ClassName, MethodName, argsOfMethod...)という形式でクラス名、メソッド名、必要な引数を指定します。ここでのClassNameMethodNameは文字列値ですが、その他の引数は任意の型の値を指定できます。例:


java:call("java.lang.Double", "compare", 3.1415d, 1.51d)
      

この例では、Double.compare()というJavaメソッドを使って、Double型である2つの値を比較します。

非静的Javaメソッドを呼び出し

非静的メソッドを呼び出す場合は、java:call(java:new(ClassName, argsOfConstructor), MethodName,argsOfMethod...)という形式でコンストラクターのクラス名と引数を指定し、java:new使ってクラスのインスタンスを作成します。ここでのClassNameMethodNameは文字列値ですが、その他の引数は任意の型の値を指定できます。Java呼び出しの最初の引数として、java:newを使ったクラスのインスタンスを指定する必要があります。2番目の引数はメソッド名でなければなりません。例:


java:call(java:new("java.util.Random", 536815L), "nextInt", 100)
      

この例では、シード値を持つRandomオブジェクトが作成され、そのnextIntメソッドを呼び出します。

情報メモ重要:
  • java:newの結果を変数に割り当てることはできません。java:callで直接使用してください。
  • java:newは単独では使用できません。このjava:newは、Java関数呼び出しの最初の引数としてのみ使用されます。

Java呼び出しを連鎖

あるjava:callの結果を別のjava:callの最初の引数として使用すれば、呼び出しを連鎖させることができます。例:

  • 
    java:call(java:call("java.lang.String", "valueOf", 100), "concat", "$")
          

    この例では、100という整数を文字列に変換した後、ドル記号を連結させます。

  • 
    java:call(java:call(java:new("java.text.SimpleDateFormat", "yyyy-MM-dd"), "parse", "2018-10-15"), "getDate")
          

    この例ではSimpleDateFormatオブジェクトが作成され、日付文字列を解析して日付を取得します。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。