Beanshell简单例子
来源:互联网 发布:k60单片机 编辑:程序博客网 时间:2024/06/12 00:09
Beanshell是轻量级的java 脚本语言。
官方主页http://www.beanshell.org, 通过简介我们可以看到使用beanshell可以给我们基于java的程序增加动态编程功能。 下面就给出几个示例。
1, 通过BSFManager
如下例子我们可以看到首先给脚本增加2两个变量,第一个是类型为Integer的var1, 第二个是当前时间,类型为Date。 然后String var1 = var1 + “_” + date.toString(); 返回var1的值。
import java.util.Date;import org.apache.bsf.BSFException;import org.apache.bsf.BSFManager;public class BeanShellManagerDemo { public static void main(String[] args) { BSFManager mgr = new BSFManager(); try { // Set variables mgr.declareBean("var1", 5, Integer.class); mgr.declareBean("date", new Date(), Date.class); String script = "import java.util.Date;" +" String var1 = var1 + \"_\" + date.toString();" +" return var1"; Object result = mgr.eval("beanshell", "no", 0, 0, script); System.out.println("source result:" + result); } catch (BSFException ex) { ex.printStackTrace(); } }}
运行结果为source result:5_Mon Aug 08 22:45:18 CST 2016。 注意具体时间会变化的。
第二种,使用Interpreter。
与第一种情况类似,我们首先设置了两个变量var1和date,然后获取date,已经对var1进行运算。 后面我们加载了demo.bsh文件,这是个文本文件。内容为return var1 + “_abc”;
import java.io.IOException;import java.util.Date;import bsh.EvalError;import bsh.Interpreter;public class beanshell { /** * @param args */ public static void main(String[] args) { Interpreter i = new Interpreter(); // Construct an interpreter try { // Set variables i.set("var1", 5); i.set("date", new Date() ); Date date = (Date)i.get("date"); System.out.println("CurrentDate:" + date ); // Eval a statement and get the result i.eval("bar = var1*10"); // retrieve a variable System.out.println( i.get("bar") ); // Source an external script file try { Object obj = i.source("demo.bsh"); System.out.println( "source result:" + obj); } catch ( IOException e) { e.printStackTrace(); } } catch (EvalError e) { e.printStackTrace(); } }}
最终运行结果为:
CurrentDate:Mon Aug 08 22:49:28 CST 2016
50
source result:5_abc
注意:通过测试发现,使用BSFManager,脚本的容错性更高,比如当使用BSFManager,script内容为“qqqqqqxxxx”也不或发生异常,但是如果使用Interpreter和load就直接报错了。
我使用的是bsh-2.0b4.jar
0 0
- Beanshell简单例子
- beanshell简单使用
- Beanshell
- BeanShell
- BeanShell
- BeanShell
- beanshell
- BeanShell
- ant脚本中用beanshell实现简单的自定义task
- spring和3大动态语言(jruby groovy beanshell)的例子
- 简单例子
- 简单例子
- 简单例子
- beanshell简介
- Beanshell介绍
- beanshell是什么
- Beanshell研究
- BeanShell简介
- 【工具】gdb多线程/多进程(守护进程)调试
- ValueAnimator
- http://blog.csdn.net/defonds/article/details/48716161
- Bridge Pattern(桥接模式)
- Android NumberPicker
- Beanshell简单例子
- 数据结构——基于粗粒度锁和条件变量的线程安全队列
- listView常用方法小记
- 链表中倒数第k个结点
- C++:可调用对象与function
- UFLDL cnnConvolve.m
- 贝叶斯推断及其互联网应用(一):定理简介
- jquery 页面内编辑的表格
- 数据科学家应该掌握的12种机器学习算法(附信息图)