[英]How to call Java method that stored in string variable
首先,这与其他问题不同,因为表达式包含参数。
假设我们有这个方法:
public static int test(int x, Double y) {
return somthing
}
我们有这样的字符串表达式:
String expression = "test(1, 2)";
那么我们如何运行这个表达式呢?
我想编写一个带参数的方法并从表达式中调用它。
我找不到任何图书馆来解决这个问题。
请帮忙
您可以使用脚本引擎和脚本语言(例如 JavaScript)来处理您的表达式。
package expression;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class App
{
public static void main( String[] args )
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
try {
engine.eval("var test = Packages.expression.App.test");
Object result = engine.eval("test(1,2)");
System.out.println(result);
} catch (ScriptException e) {
//TODO: handle exception
e.printStackTrace();
}
}
public static int test(int x, Double y) {
return x;
}
}
"var test = Packages.expression.App.test"
行为您的方法创建了一个别名。
行Object result = engine.eval("test(1,2)");
调用你的方法。
您需要在 maven pom.xml 中包含以下依赖项:
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.1</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.