JAvaラーニングノート--javaでJavaScriptコードを呼び出す

4195 ワード

JAvaでJavaScriptコードを呼び出す
簡単にjsコードを実行する方法を紹介して、変数を定義して、関数を呼び出して、jsファイルを実行して、直接コードに上がります
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ScriptEngineTest {

    public static void main(String[] args) throws ScriptException, NoSuchMethodException, FileNotFoundException {
        //      
        ScriptEngineManager scriptEngineManager=new ScriptEngineManager();
        ScriptEngine scriptEngine=scriptEngineManager.getEngineByName("javascript");
        String str="var product={name:'computer',price:55};println(product.price);";

        //      
        scriptEngine.eval(str); 
        // engine.eval("alert(product.price);");           js ,   

        //    ,          ,javascript java     
        scriptEngine.put("a", "1111");
        System.out.println(scriptEngine.get("a"));
        scriptEngine.eval("a = "+scriptEngine.get("a")+"*2.0;");//      
        System.out.println(scriptEngine.get("a"));

        //  function  
        //    
        scriptEngine.eval("function add(a,b){return a+b;}");
        //      
        Invocable invoke=(Invocable) scriptEngine;
        //    
        Double result=(Double)invoke.invokeFunction("add", new Object[]{1,2});
        //     Double,  Float Integer     
        System.out.println(result);

        //     java ,     java ,  java js   
        String str1="importPackage(java.util); var numList=Arrays.asList([1,2,3,4,5]);";
        scriptEngine.eval(str1);
        List numList=(List)scriptEngine.get("numList");
        System.out.println(numList.get(4));//        double

        //    js  
        String jsFileName = "a.js";   //   js     
        FileReader reader = new FileReader(jsFileName);   //          
        scriptEngine.eval(reader);  
    }
}

出力結果:55,1111,22.2.0 3.0 5.0