繁体   English   中英

如何使用Xtend活动注释将String类型的参数添加到生成的Java setter中?

[英]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

  1. 使用TransformationContext.findTypeGlobally()TransformationContext.findX()方法查找类型。
  2. 通过调用TransformationContext.newTypeReference()获得TypeReference

例如,为了创建一个TypeReferenceLinkedHashMap<String, Object>doTransform()方法,就可以使用

LinkedHashMap.findTypeGlobally.newTypeReference(string, object)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM