我想擴展String
的asType
方法來處理LocalDateTime
。我知道如何覆蓋這個方法,但是我不知道我應該把它放到項目結構的全局工作位置 - 用於我的項目中的所有字符串。將類似的擴展放在類路徑中的任何位置是否足夠?我知道有一個特殊的擴展公約(META-INF/services),它是如何工作的方法重寫?Groovy - 擴展結構
回答
關於此主題的所有文檔可在here找到。和here恰恰相關的部分可以找到。
模塊擴展和模塊描述
對Groovy是能夠加載你的擴展方法,你必須聲明 您的擴展的輔助類。您必須創建一個名爲 org.codehaus.groovy.runtime.ExtensionModule到META-INF文件/服務 目錄:
爲 規格org.codehaus.groovy.runtime.ExtensionModule MODULENAME =測試模塊的ModuleVersion = 1.0-測試 extensionClasses = support.MaxRetriesExtension staticExtensionClasses = support.StaticStringExtension模塊 描述符需要4個按鍵:
MODULENAME:你的模塊
的ModuleVersion的名字:您的模塊的版本。請注意,版本號爲 僅用於檢查是否不在兩個不同版本的 中加載相同的模塊。
extensionClasses:擴展助手類的列表,例如 方法。您可以提供幾個班級,因爲它們是以逗號分隔的 。
staticExtensionClasses: 靜態方法的擴展助手類的列表。你可以提供幾個班級,因爲他們是用逗號分隔的 。
請注意,模塊不需要定義靜態 幫助程序和實例助手,並且您可以將多個類添加到單個模塊的 。您還可以在一個單一的 模塊中擴展不同的類,而不會出現問題。甚至可以在單個擴展類中使用不同的類 ,但推薦將擴展 方法按功能集分組。
模塊擴展和CLASSPATH
值得一提的是,你不能用它在 使用它編譯同一時間碼的延伸。這意味着要使用擴展 ,它必須在編譯類的類路徑上可用,然後 代碼才能被編譯。通常,這意味着您不能將 測試類放在與擴展類 本身相同的源單元中。由於一般情況下,測試源與正常源分離,並在構建的另一個步驟中執行,這不是 問題。
- 1. 擴展結構
- 2. 擴展類層次結構
- 3. PHP擴展返回結構
- 4. VB.Net擴展類和結構?
- 5. 瞭解Firefox擴展結構
- 6. Firefox擴展文件結構
- 7. 擴展結構數組
- 8. 結構擴展方法
- 9. Groovy擴展hashmap與字段
- 10. Groovy的擴展String類
- 11. Groovy的擴展TimeCategory類
- 12. 擴展SubSonic的IQueryable結構(通過LINQ?)
- 13. Magento子/擴展主題local.xml結構
- 14. MVC4可擴展插件體系結構
- 15. Ninject XML擴展 - 插件體系結構
- 16. 從Air Native擴展返回結構
- 17. Visual Studio 2015文件結構擴展
- 18. 遞歸擴展結構定義?
- 19. 紅寶石C擴展內部結構
- 20. 擴展Windows API結構安全嗎?
- 21. 在循環中擴展結構/文檔
- 22. 擴展Magento目錄數據庫結構
- 23. 擴展typedef結構(與VC++ 11兼容)
- 24. 在C++中初始化擴展結構
- 25. 在Python中擴展類層次結構
- 26. 瞭解結構的動態擴展
- 27. 新的索引結構擴展的Neo4j
- 28. 擴展的圖形結構在C
- 29. 使用Groovy擴展方法構建項目
- 30. 擴展結構成員與另一個結構