如何在Java语言中将表达式转换为方法

时间:2015-11-03 02:41:42

标签: java

例如:

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

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

1 个答案:

答案 0 :(得分:1)

Java包括ScriptEngine(另请参阅Oracle Nashorn)。您可以使用ScriptEngine机制嵌入pythonrubyscheme等。但我们可以使用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