由于对beanshell对接口的实现功能不是很清楚..故写下这篇不只是对是错的理解,主要是为了給自己留下学习时产生的疑问及即使的理解,为后来的梳理做个标记
对接口的实现是beanshell的强大之处之一,这个功能允许你写脚本来构建handle,listener或者一些java API的是实现
匿名内部类
可以使用标准的匿名内部类语法来实现java接口,如下
buttonHandler = new ActionListener() {
actionPerformed( event ) {
print(event);
}
};
button = new JButton();
button.addActionListener( buttonHandler );
frame(button);
上面的代码中,我们创建了个对象来实现ActionListener接口,并把生成的对象分配你变量buttonHandler,并实现actionPerformed(event),
在看下面的代码
actionPerformed( event ) {
print( event );
}
button = new JButton("Foo!");
button.addActionListener( this );
frame( button );
没有实现ActionListener,直接用了'this'关键字注册监听,这就体现了beanshell的自动匹配的特性,上面的actionperformed()方法的到了实现,当有关注册监听的时候,就能自动cast,
前面讲到'this'关键字代表着他在范围的对象,所以上面的代码就可以看成整个脚本implement了actionListener接口,并在脚本中直接实现了actionPerformed()
在看下面的代码:
messageButton( message ) {
JButton button = new JButton("Press Me");
button.addActionListener( this );
JFrame frame = frame( button );
actionPerformed( e ) {
print( message );
frame.setVisible(false);
}
}
messageButton("Hey you!");
messageButton("Another message...");
actionPerformed()方法是在messageButton()内部实现,前面有讲到,在beanshell中方法即可以看成对象,上面代码中的this正是代表着messageButton作用范围所代表的对象,你可以看成这个对象实现了ActionListener()接口
由此可以看出,beanshell在执行的过程中,会根据请求和参数以及返回值来自动匹配接口中的方法
不需要实现接口的所有的方法,只需要实现你使用的方法即可,如果使用你没有实现的方法,beanshell将抛出一个错误,
ml = new MouseListener() {
mousePressed( event ) { ... }
// handle the rest
invoke( name, args ) { print("Method: "+name+" invoked!");
}
由此实现多线程.可以如下方法直接实现
foo() {
run() {
// do work...
}
return this;
}
foo = foo();
// Start two threads on foo.run()
new Thread( foo ).start();
new Thread( foo ).start();
分享到:
相关推荐
呵呵 我在看ofbiz的时候用到的beanshell 也是在网上搜索的 希望对大家有用
BeanShell BeanShell
如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上双击来起动BeanShell的桌面。但不管怎样,如果你要让BeanShell与你的类与应用程序一起工作就必须将 BeanShell的jar文件加到classpath中。 你可以将...
beanshell和jdom的jar包 BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法
jmeter处理beanshell RSA加密接口处理流程。包含MD5,RSA,AES三种加密处理接口方法。
beanshell 源码 jar doc sound
Pro_Android_Scripting_with_SL4A__Writing_Android_Native_Apps_Using_Python__Lua__and_Beanshell.epub
JMeter beanShell修改http请求参数,尝试对http进行修改。
什么是BeanShell BeanShell是一个小型的,免费的,可嵌入式的,具有面向对象脚本语言特性的Java代码解释器。简而言之,BeanShell可以动态的解释JAVA语言。 什么是Mozilla Rhino rhino是使用java代码实现的...
Pro_Android_Scripting_with_SL4A__Writing_Android_Native_Apps_Using_Python__Lua__and_Beanshell.mobi
BeanShell帮助文档pdf和jar包
保存本地文件会把逐次请求的不同参数的结果分别保存。...BeanShell PostProcessor每次可以打开相同文件,在一个文件上 追加 写入 。可以实现存到同一文件中。 注意:保存结果到本地,也要创建***正则提取器***哦~~
how to use beanshell to debug java application
jmeter配置原件BeanShell使用方法场景介绍,Jmeter常用内置变量及方法介绍
Scripting in Java starts with the explanation of basic scripting concepts and mechanisms needed for implementating scripting languages on the Java platform. Next, it focuses on particular languages ...
beanshell的使用,介绍以及源码
beanshell 必需的jar bsh-2.0b4.jar bsf.jar
maven-script-beanshell-3.2.jar