用java scripting 动态脚本配合java使用


作用:运行时动态执行脚本

方法:java scripting api + java

示例:

Animal类

public class Animal {

    private int    size;
    private String name;

    public Animal(int size, String name) {
        this.size = size;
        this.name = name;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

People类

public class People {

    private int age;
    private int brother;

    public People(int age, int brother) {
        this.age = age;
        this.brother = brother;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getBrother() {
        return brother;
    }

    public void setBrother(int brother) {
        this.brother = brother;
    }
}


js脚本文件

if(people.age==10){ 
	animal.name=='2'
}else if(people!=null && people.age==11 && animal.name=='2'){
	false
}


测试类

import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


import javax.script.Bindings;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.SimpleBindings;

public static void testJs() {
        try {
            ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
            //js txt
            FileReader fr = new FileReader(
                "---------\\javascript\\people_animal.js");
            Bindings bindings = new SimpleBindings();

            //case1
            People people = new People(11, 2);
            Animal animal = new Animal(2, "2");
            bindings.put("people", people);
            bindings.put("animal", animal);

            Object result = null;
            if (engine instanceof Compilable) {
                //once compiling
                System.out.println("Compiling....");
                Compilable compEngine = (Compilable) engine;
                CompiledScript cs = compEngine.compile(fr);
                result = cs.eval(bindings);

            } else {
                result = engine.eval(fr, bindings);
            }

            if (result != null) {
                System.out.println(result);
            }

        } catch (IOException ioEx) {
            ioEx.printStackTrace();
        } catch (ScriptException scrEx) {
            scrEx.printStackTrace();
        }
    }


参考 :http://www.ibm.com/developerworks/cn/java/j-5things9.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值