我想扩展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. 扩展结构成员与另一个结构