BeanShell 就和在 Java 中一样,你可以通过包和类的全名来引用一个类或者从 Java 包中导入一个或者多个类。

// 标准 Java
import javax.xml.parsers.*;
import mypackage.MyClass;

在 BeanShell 中导入语句可以出现在任何地方,甚至于在一个方法里,而不仅仅在一个文件的头部。当有冲突时,后导入的优先于之前导入的。


其中稍微有点实验性的功能是“supter import”。通过这个功能你可以自动导入整个类路径,就像这样:


 
  

import *;

第 一次这样做, BeanShell 将映射出你整个类路径;所以这主要面向交互使用。注意在你的类路径中导入每个类将消耗时间。这样也会导致许多歧义的发生。一般从映射整个类路径中处理带有 歧义的导入时 BeanShell 会报出Error。通过导入你想要用的类来消除这种歧义。


提示:
BeanShell 的 which() 命令将使用类路径映射功能告诉你类路径中特定的类究竟位于哪里。
bsh % which( java.lang.String );
Jar: file:/usr/java/j2sdk1.4.0/jre/lib/rt.jar

参见“类路径管理”获得更多关于使用 addClassPath() 或者 setClassPath() 命令修改 BeanShell 运行时的类路径的信息。


也可以查看“BeanShell 命令集合”获取关于从类路径中导入新的 BeanShell 命令的信息。



默认导入

在默认情况下,普通的 Java 代码以及扩展包已经导入。他们的导入顺序是:


  • javax.swing.event
  • javax.swing
  • java.awt.event
  • java.awt
  • java.net
  • java.util
  • java.io
  • java.lang

两个 BeanShell 包的类也默认导入:


  • bsh.EvalError
  • bsh.Interpreter

最后,我们应该注意到 BeanShell 命令也可以从类路径导入。默认的命令通过以下的方式进行导入:


 
  

importCommands("/bsh/commands");

我们也会在后面的章节中讨论如何导入自己的命令。


 
  

提示:

类 java.awt.List 和 java.util.List 都被默认导入了。

因为作为 java.util 的一部分,java.util.List 在后面导入,所以它更优先。

在你的脚本中简单地再一次导入 java.awt.List 或者导入 java.awt 包来进行访问。后导入优先使用。