我在AbstractFieldProcessor.doTransformation覆盖中有以下代码段:
field.declaringType.addMethod('set'+ field.simpleName.toFirstUpper +'Input' )
[
addParameter("values", ########)
addParameter("keys",field.type)
body=
'''
this.click«field.simpleName.toFirstUpper»();
«field.simpleName»Input.sendKeys("ABCDEFG");
'''
]
如何为"值"生成字符串类型的参数?参数。 field.type不是String。如何为String创建TypeReference?
答案 0 :(得分:2)
可以使用TypeReference
方法获取String
引用类型TypeReferenceProvider.getString()
。
在实践中,您可以使用TransformationContext
界面(因为它扩展了TypeReferenceProvider
):
override doTransform(MutableClassDeclaration annotatedClass, extension TransformationContext context)
{
// Add field of type String
annotatedClass.addField("stringField") [
type = string // Get TypeReference to type String
]
}
TypeReferenceProvider
中还有其他有用的方法可以将TypeReference
提供给其他常用类型,例如getObject()
,getPrimitiveX()
等。
要获得TypeReference
一般的任何类型,首先应找到该类型,然后为其创建TypeReference
。您也可以使用TransformationContext
:
TransformationContext.findTypeGlobally()
或TransformationContext.findX()
方法查找类型。TypeReference
TransformationContext.newTypeReference()
醇>
例如,要在TypeReference
方法中创建LinkedHashMap<String, Object>
到doTransform()
,您可以使用
LinkedHashMap.findTypeGlobally.newTypeReference(string, object)