Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy-extensions结构_Groovy - Fatal编程技术网

Groovy-extensions结构

Groovy-extensions结构,groovy,Groovy,我想扩展String的asType方法来处理LocalDateTime。我知道如何重写这个方法,但是我不知道应该把它放在项目结构中的什么位置来全局工作——对于我项目中的所有字符串。把这样的扩展放在类路径的任何地方就足够了吗?我知道对于扩展(META-INF/服务)有一个特殊的约定,它是如何用于方法重写的?关于这个主题的所有文档都可以找到。确切地说,可以找到相关的部分 模块扩展和模块描述符 为了让Groovy能够加载扩展方法,必须声明 您的扩展助手类。您必须创建一个名为 org.codehaus.

我想扩展
String
asType
方法来处理
LocalDateTime
。我知道如何重写这个方法,但是我不知道应该把它放在项目结构中的什么位置来全局工作——对于我项目中的所有字符串。把这样的扩展放在类路径的任何地方就足够了吗?我知道对于扩展(META-INF/服务)有一个特殊的约定,它是如何用于方法重写的?

关于这个主题的所有文档都可以找到。确切地说,可以找到相关的部分

模块扩展和模块描述符

为了让Groovy能够加载扩展方法,必须声明 您的扩展助手类。您必须创建一个名为 org.codehaus.groovy.runtime.ExtensionModule插入META-INF/services 目录:

org.codehaus.groovy.runtime.extensionmodulemodulename=的测试模块 规格模数转换=1.0-测试 extensionclass=support.MaxRetriesExtension staticExtensionClasses=support.StaticStringExtension模块 描述符需要4个键:

moduleName:模块的名称

moduleVersion:模块的版本。请注意,版本号为 仅用于检查两个模块中是否没有加载相同的模块 不同的版本

extensionClasses:实例的扩展助手类列表 方法。您可以提供几个类,只要它们是逗号 分开

staticExtensionClasses:的扩展助手类列表 静态方法。您可以提供几个类,因为它们是 逗号分隔

请注意,模块不需要同时定义静态和静态 帮助程序和实例帮助程序,您可以向其中添加几个类 单个模块。您还可以在单个数据库中扩展不同的类 模块没有问题。甚至可以使用不同的类 在单个扩展类中,但建议将扩展分组 方法按特征集划分为类

模块扩展和类路径

值得注意的是,您不能使用在 与使用它的代码相同。这意味着要使用扩展, 它必须在类路径上可用,作为编译类,在 使用它的代码被编译。通常,这意味着你不能 测试类与扩展类位于同一源单元中 它本身因为一般来说,测试源与正常源是分开的 并在构建的另一个步骤中执行,这不是 问题