有沒有辦法自動加載Groovy解釋器中的用戶類,System.out的方式是自動加載(所以你不必導入System.out使用println)?我希望能夠編寫使用自定義類的腳本並在groovy解釋器中運行腳本,而不必一直需要所有類。是否可以自動將用戶類預加載到groovy解釋器中?
1
A
回答
2
是的,你只需要創建一個配置文件/ rc文件。只需在〜/ .groovy/groovysh.profile中創建一個文件並將其導入到那裏。您還需要確保您想要包含的任何其他類都是CLASSPATH的一部分。
例如:〜/ .groovy作爲/ groovysh.profile:
import org.apache.commons.lang.StringUtils
println "in groovysh.profile"
然後運行groovysh並使用從StringUtils的一個方法:
% groovysh
in groovysh.profile
Groovy Shell (1.7.3, JVM: 1.6.0_20)
Type 'help' or '\h' for help.
---------------------------------------------------------------------------------------------------------------------------------
groovy:000> StringUtils.isWhitespace(" ")
===> true
groovy:000>
你可以看到,進口到位(和它也會打印出我在配置文件中的println,這個例子只有在你的classpath中有commons-lang jar文件的情況下才會起作用
請參閱the Groovy Shell mo細節。
0
Groovy向Object添加了一些方法,包括您期望在printWriters上使用的方法,如println
和printf
。他們隱式使用System.out。這實際上就是Groovy如果感覺像System.out是全局可用的。
如果您想默認導入一組類,那麼可以在不指定完整軟件包名稱的情況下使用它們,Ted對groovysh.profile的評論適用。然而,如果你想要一個特定的對象,比如System.out,全局可用,所以它的方法可以在不引用對象的情況下調用,那麼你可以向Object添加一些動態方法。例如,爲了使默認的全局JDK記錄儀的記錄方法全局可用:
Object.metaClass.info = { String message ->
java.util.logging.Logger.global.info(message)
}
Object.metaClass.warning = { String message ->
java.util.logging.Logger.global.warning(message)
}
Object.metaClass.severe = { String message ->
java.util.logging.Logger.global.severe(message)
}
etc...
一旦這些方法應用到基礎對象的metaClass,任何對象都可以調用info("message")
,並把它記錄下來,有效地使Logger.global與System.out相同。
相關問題
- 1. 是否可以自動加載ng-view?
- 2. 是否可以將字體動態加載到用戶計算機中
- 3. 是否可以自動將用戶包含到所有模板?
- 4. [自動釋放]是否可以接受?
- 5. 是否可以動態地將rpt加載到子報表中?
- 6. 使用Groovy類加載器
- 7. 是否可以將預製BIOS配置加載到乾淨的機器上?
- 8. 是否可以將對象添加到特定的自動釋放池?
- 9. 自動加載預期類
- 10. Javascript陣列中的圖像URL是否自動預加載到瀏覽器中?
- 11. 是否可以在OCaml解釋器中使用箭頭鍵?
- 12. 是否可以將Python解釋器的狀態保存到文件中?
- 13. 是否可以將自定義類添加到QStandardItem?
- 14. 是否可以將類添加到自定義tinyMCE按鈕?
- 15. 將預加載器添加到jquery自動完成
- 16. 是否可以將JPA註釋添加到超類實例變量中?
- 17. 是否可以將像素添加到「自動」值?
- 18. 是否可以使用spl_autoload_register自動加載靜態庫?
- 19. php - 自動加載器的實現,預加載所有類
- 20. 是否可以在Android中將HTML文件加載到TextView中?
- 21. Groovy類加載器問題
- 22. UWP頁面預加載(是否可以預加載頁面內容)
- 23. DDD是否可以解釋字符串?
- 24. 是否有人可以解釋OVER
- 25. 是否可以爲Java創建自定義類加載器,以有條件地從JAR或CLASS_PATH加載類?
- 26. 加載類的自動加載器將無法按預期工作
- 27. 是否可以使用64位Python解釋器的32位ctypes?
- 28. 是否可以禁用YARV的全局解釋器鎖?
- 29. 是否可以使用Couchbase預加載/預緩存內存中的數據?
- 30. 是否可以將方法添加到集合中的類中?
酷,很好地工作。有沒有辦法爲非交互式groovy腳本解釋器(groovy)做同樣的事情,還是它只適用於groovysh? – Steve 2010-06-29 00:45:17