gpt4 book ai didi

java - 使用 xtend 2.7.3 设置注释值?

转载 作者:行者123 更新时间:2023-12-01 11:56:35 25 4
gpt4 key购买 nike

全部我正在将我的项目从 xtend 2.4.3 迁移到 2.7.3

我遇到了一些问题。这是在 2.4.3 上运行的代码

val AttrType = findTypeGlobally(typeof(Attr));
val fld = Cls.addField(Pkt::getMemberName(m))
[
val annot = addAnnotation(AttrType )
annot.set("value", GenHelper::getAnnot(m))
visibility = Visibility::PUBLIC
]
setFieldType(m, fld, context)

在 2.7.3 上,addAnnotation 返回 AnnotationReference。

无法将值设置到 AnnotationReference 中。如何解决?

谢谢。

最佳答案

使用采用 lambda 的 addAnnotation 方法来初始化注释引用。在该 lambda 中,您可以访问 AnnotationReferenceBuildContext 来设置值。

val AttrType = findTypeGlobally(typeof(Attr))
val fld = Cls.addField(Pkt::getMemberName(m))
[
val annot = addAnnotation(AttrType) [
set("value", GenHelper::getAnnot(m))
]
visibility = Visibility::PUBLIC
]
...

另请注意:

  1. typeOf 已过时。您可以直接使用Attr来引用该类。
  2. 用于静态成员访问的
  3. :: 现在可以用简单的 . 替换。
  4. 如果 Attr 类位于 Activity 注释项目和客户端项目的类路径上,则不必使用“findTypeGlobally”。
  5. 静态(扩展)导入可以帮助您编写更简洁的代码,例如

所以你的代码可能会变成

import static extension <whereever>.Pkt.*
import static extension <whereever>.GenHelper.*
import static org.xtend.lib.macro.declaration.Visibility.*
...

Cls.addField(m.memberName) [
Attr.addAnnotation [
'value'.set(m.annot)
]
visibility = PUBLIC
type = m.fieldType(context) // might need further refactoring
]

...

关于java - 使用 xtend 2.7.3 设置注释值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28407003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com