簡體   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