我的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不是字符串。如何为字符串创建TypeReference?
最佳答案
可以使用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)