繁体   English   中英

如何调用存储在字符串变量中的 Java 方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM