"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 方法:

数组以列表形式返回:

没有自然语言表示的对象会以 JavaObject 表达式的形式返回,就像在 J/Link 中一样:

类型 > 并在下拉菜单中选择 Java 可获取一个使用 ExternalEvaluate 进行计算的代码单元格:

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

范围  (2)

可在不封装在一个完整的类定义的情况下定义一个 Java 方法. 记住这种方法定义为公有且静态 (public and static),所以可以删除 "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")