Java 腳本參數(shù)

2018-03-18 14:30 更新

Java腳本教程 - Java腳本參數(shù)


Java Scripting API允許我們將參數(shù)從Java應(yīng)用程序傳遞到腳本引擎,反之亦然。

將參數(shù)從Java代碼傳遞到腳本

msg 是print()函數(shù)中使用的變量。

腳本不聲明 msg 變量。

我們可以通過(guò)幾種方式將參數(shù)傳遞給腳本引擎。

一種方法是使用腳本引擎的 put(String paramName,Object paramValue)方法,它接受兩個(gè)參數(shù):

  • 參數(shù)的名稱(chēng),它需要與腳本中變量的名稱(chēng)匹配。
  • 參數(shù)的值。

要將名為 msg 的參數(shù)傳遞給腳本引擎,請(qǐng)按如下所示調(diào)用put()方法:

engine.put("msg", "Hello from Java program");

以下代碼顯示了如何將參數(shù)從Java程序傳遞到腳本。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
  public static void main(String[] args) {
    // Get the Nashorn engine
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    String script = "print(msg)";
    try {
      engine.put("msg", "Hello from Java program");
      engine.eval(script);
    } catch (ScriptException e) {
      e.printStackTrace();
    }
  }
}

上面的代碼生成以下結(jié)果。


將名為msg的參數(shù)傳遞給JRuby中的腳本。

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jruby");

String script = "puts($msg)";
engine.put("msg", "Hello from Java");

// Execute the script
engine.eval(script);

例子

傳遞給腳本的Java對(duì)象的屬性和方法可以在腳本中訪(fǎng)問(wèn)。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
  public static void main(String[] args) throws Exception{
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    String script = "print(msg.toUpperCase());print(msg.indexOf("a"))";
    engine.put("msg", "w3cschool.cn");
    engine.eval(script);
  }
}

上面的代碼生成以下結(jié)果。


將參數(shù)從腳本傳遞到Java代碼

腳本引擎可以將全局范圍變量傳遞給Java代碼。

ScriptEngine get(String variableName)方法可以訪(fǎng)問(wèn)Java代碼中的這些變量。

它返回一個(gè)Java對(duì)象。

全局變量的聲明是與腳本語(yǔ)言相關(guān)的。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Main {
  public static void main(String[] args) throws Exception {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    String script = "var year = 2015";

    engine.eval(script);
    Object year = engine.get("year");
    System.out.println("year"s class:" + year.getClass().getName());
    System.out.println("year"s value:" + year);
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)