"Java" (外部计算系统)
"Java" (外部计算系统)
更多信息
- 支持 Java 版本 9.0 及更高版本.
- Java 是一个常见的通用编程语言.
- Java 不要求与 ExternalEvaluate 一起使用的配置.
ExternalEvaluate 用法
- ExternalEvaluate["Java",code] 在 Java REPL 中执行代码字符串并以 Wolfram 语言表达式的形式返回结果.
使用说明
- ExternalEvaluate 使用的 Java 运行时与 J/Link 运算如 LoadJavaClass 和 JavaNew 使用的一样,允许 J/Link 和 ExternalEvaluate 间的无缝互通.
- J/Link 通过其 AddToClassPath 函数可见的类在 ExternalEvaluate 中也同样对 Java 代码可见.
- 在 ExternalEvaluate 中定义的 Java 类会自动加载到 J/Link 并可与其他 Java 类一样被使用.
范例
打开所有单元 关闭所有单元基本范例 (5)
ExternalEvaluate["Java", "2+2"]ExternalEvaluate["Java", "System.getProperty(\"java.version\")"]ExternalEvaluate["Java", "new int[]{1,2,3,4}"]没有自然语言表示的对象会以 JavaObject 表达式的形式返回,就像在 J/Link 中一样:
ExternalEvaluate["Java", "var obj = new java.util.Timer()"]类型 > 并在下拉菜单中选择 Java 可获取一个使用 ExternalEvaluate 进行计算的代码单元格:
范围 (2)
可在不封装在一个完整的类定义的情况下定义一个 Java 方法. 记住这种方法定义为公有且静态 (public and static),所以可以删除 "public static" 前缀:
方法定义返回一个可以调用的 ExternalFunction 对象:
removeVowels = %;removeVowels["Hello World"]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 表达式:
nodeClass = %;
Needs["JLink`"];
JavaNew[nodeClass, "foo"]还可以从 ExternalEvaluate 中直接调用新的类:
相关指南
-
▪
- Java Interface ▪
- 外部已诠释的语言接口 ▪
- 外部语言接口
历史
2021年引入 (12.3)