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