例如:
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/