java - Java语言如何将表达式转为方法

标签 java

例如:

int x = 4;
int y = 5;
int z = (x * y);

现在我想将(x * y)变成一个函数,我发现Dijkstra的两层堆栈可以提供帮助;但问题是,单个表达式会被多次使用,每次计算表达式时,系统都会实例化两个堆栈并使用循环结构,因此效率低下。那么有没有更好的方法来处理这个问题呢?

最佳答案

Java 包括 ScriptEngine (另见Oracle Nashorn)。您可以使用 ScriptEngine 机制来嵌入 python , ruby , scheme等等。但是 JavaScript 是内置的,所以我们可以这样做,

ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
try {
  engine.eval("function multiply(x, y) { return x * y; }");
  System.out.println(engine.eval("multiply(3, 2);"));
} catch (ScriptException e) {
  e.printStackTrace();
}

并获取(作为输出)

6

关于java - Java语言如何将表达式转为方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33490507/

相关文章:

java - Spring Cloud Config 无法获取正确的值

java - 如何在 JUnit 测试中测试集合中元素的顺序?

java - TomEE 7 嵌入式 - 将所有流量重定向到 HTTPS

java - Android - 如何在 android 中将字符串转换为 utf-8

java - Spymemcached 的 MemcachedClient#delete 什么时候返回 false?

java - Tapestry Hibernate session 超出 ExecutorService 固定线程池后关闭

java - 将焦点设置到按钮

java - 测试是否与 double 相等

java - java.util.Collections 中同步...方法的可用性

java - android httpclient 工作但我类似的 HttpUrlconnection 没有发布