"Java" (外部評価システム)

詳細

  • Javaバージョン9.0以降がサポートされる.
  • Javaは人気の高い汎用プログラミング言語である.
  • JavaはExternalEvaluateで使用するための設定が必要ない.

ExternalEvaluateの使用法

  • ExternalEvaluate["Java",code] はJava REPLでコード列を実行し,Wolfram言語式として結果を返す.

データ型

  • J/Linkの場合と同様に,次のJavaの組込み型がサポートされている:
  • byte, char, short, longInteger整数
    float, doubleReal実数値の数
    booleanTrue|Falseブール値
    StringString文字の値の列
    ArrayList値の配列
    BigDecimalReal任意精度の実数
    BigIntegerInteger任意サイズの整数
    nullNullヌル値
    objectJavaObject任意のJavaオブジェクト
    Exprexpression任意のWolfram言語式

使用法

例題

すべて開くすべて閉じる

  (5)

Javaで2+2を評価すると結果が戻る:

Javaメソッドを呼び出す:

配列はリストとして返される:

自然な表現のないオブジェクトはJ/Linkと同様にJavaObject式として返される:

>とタイプしてドロップダウンメニューからJavaを選ぶと,評価にExternalEvaluateを使うコードセルが得られる:

java.util.Arrays.stream(new int[]{1,2,3}).map(num -> num*num).toArray()

スコープ  (2)

Javaメソッドは,完全なクラス定義で囲まなくても定義することができる.このようなメソッド定義は常に公開されており静的なので,「public static」接頭辞を削除することができる:

String removeVowels(String s) { return s.replaceAll("[aeiou]", ""); }

メソッドの定義により,呼び出すことのできるExternalFunctionオブジェクトが返される:

クラス全体を定義する:

public class Node { private String data; private Node next; public Node(String data) { this.data = data; next = null; } public String getData() { return data; } public void setData(String data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }

クラス定義により,J/Linkで直接使うことのできるJ/Link JavaClass式が返される:

ExternalEvaluateから新しいクラスを直接呼び出すこともできる:

new Node("foo")