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 包來進行訪問。後導入優先使用。