我想在Groovy中编写自定义类型转换Category。目标是将Map
的值分配给Groovy bean的字段。将来会有不同的响应类型。 Map
的值始终是String
类型的值,但必须转换为不同的数据类型。为了完成这项工作,我创建了一个实现名为asType
的方法的Category类。这是我的代码一个简单的例子:使用带有Mixin注释的asType
class MapCategory {
static Object asType(Map self, Class clazz) {
if(clazz == Response) {
Response response = new Response()
self.each { key, value ->
response.setProperty(key, value)
}
return response
}
DefaultGroovyMethods.asType(self, clazz)
}
}
class Response {
String result
String message
}
的时候,当我申请使用use
关键字类别这一切正常。
use(MapCategory) {
println [result: 'OK', message: 'Success'] as Response
}
然而,当我尝试使用@Mixin
注解来替代它似乎并没有正常工作。我得到正确的响应类型,但所有字段都是null
。
@Mixin(MapCategory)
class MyClass {
def printResponse() {
println [result: 'OK', message: 'Success'] as Response
}
}
有没有人知道为什么它不能正确使用注释?
我知道传递' Map'到一个Groovy Bean,我的示例代码被简化了,实际的bean也有其他的数据类型,比如'Integer'和'Boolean',但是我的'Map'在开始时只保存了'Strings'。将其转换为正确的数据类型 –
好的,就像我在顶部所说的那样,然后使用'use'代替,我用另一个建议更新了它。 – OverZealous
哎呀,在作业前忘了'this.'。第二个例子现在应该工作。 – OverZealous