[英]How to get full return type forwarding in Xtend's Active Annotations?
[英]How to do I add a parameter of type String to a generated java setter using Xtend active annotations?
我的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?
可以使用TypeReferenceProvider.getString()
方法获得TypeReference
引用类型String
。
实际上,您可以使用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()
方法查找类型。 TransformationContext.newTypeReference()
获得TypeReference
例如,为了创建一个TypeReference
到LinkedHashMap<String, Object>
在doTransform()
方法,就可以使用
LinkedHashMap.findTypeGlobally.newTypeReference(string, object)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.