gpt4 book ai didi

gwt - 是否可以使用 GWT GeneratorContext 找到所有使用 @MyAnnotation 注释的类?

转载 作者:行者123 更新时间:2023-12-04 14:32:18 26 4
gpt4 key购买 nike

使用 Generators 创建类时,可以发现一个类型的所有子类。例如,您可以在 GWT Showcase 源代码中找到这种技术(参见 full code):

JClassType cwType = null;
try {
cwType = context.getTypeOracle().getType(ContentWidget.class.getName());
} catch (NotFoundException e) {
logger.log(TreeLogger.ERROR, "Cannot find ContentWidget class", e);
throw new UnableToCompleteException();
}
JClassType[] types = cwType.getSubtypes();

我想做类似的事情,但不是扩展一个类(或实现一个接口(interface))

public class SomeWidget extends ContentWidget { ... }

,我也可以通过注释小部件来做到这一点吗?

@MyAnnotation(...)
public class SomeWidget extends Widget { ... }

然后找到所有用@MyAnnotation 注释的小部件?我找不到像 JAnnotationType.getAnnotatedTypes() 这样的方法,但也许我只是瞎了眼?

注意:我能够使它与 Google Reflections 一起工作库,使用 reflections.getTypesAnnotatedWith(SomeAnnotation.class) ,但我更喜欢使用 GeneratorContext 代替,特别是因为在 DevMode 中重新加载应用程序时这会更好。

最佳答案

是的 - 最简单的方法是遍历所有类型,并检查它们的注释。您可能还有其他规则(公开的,非抽象的)也应该在那个时候完成。

for (JClassType type : oracle.getTypes()) {
MyAnnotation annotation = type.getAnnotation(MyAnnotation.class);
if (annotation != null && ...) {
// handle this type
}
}
TypeOracle实例可以从 GeneratorContext获得使用 context.getTypeOracle() .

请注意,这只会让您访问源路径上的类型。也就是说,只有当前可用的类型基于被继承的模块和 <source>。正在使用的标签。

关于gwt - 是否可以使用 GWT GeneratorContext 找到所有使用 @MyAnnotation 注释的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521016/

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