我的博客原址请点击此处

在 BeanShell 中,和 JavaScript 和 Perl 一样,脚本对象是由“封闭”的方法体来创建。通过方法返回的特殊值“this”,你可以使方法调用的结果成为一个对象的引用。在方法调用期间,你可以使用该引用指向任何变量。通常对象中包含方法,所以在 BeanShell 脚本方法中可能也包含任何层级的方法(来构成脚本对象):

 
  
  1. foo() { 
  2. print("foo"); 
  3. x=5; 
  4. bar() { 
  5. print("bar"); 
  6. return this; 
  7. myfoo = foo(); // prints "foo" 
  8. print( myfoo.x ); // prints "5" 
  9. myfoo.bar(); // prints "bar" 

如果这些代码看起来很陌生,别急,请参阅用户手册来获取更详尽的解释。

在你的脚本中,BeanShell 的脚本对象(即先前例子中的“this”这样的类型引用)可以自动实现任何 Java 的接口类型。当 Java 代码调用该接口上的方法时,相应的脚本方法将被调用来处理它们。当你试图传递一个带有接口类型方法的参数时, BeanShell将自动“匹配”该脚本对象。为了在 BeanShell 之外传递脚本的引用,你可以在必要的时候执行一个显式的转换。请参阅用户手册获取全部的细节内容。