在使用Generators创建类时,可以发现一个类型的所有子类。例如,您可以在 GWT Showcase 源代码中找到这种技术(参见完整代码):
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();
我想做类似的事情,但不是扩展一个类(或实现一个接口)
public class SomeWidget extends ContentWidget { ... }
,我也可以通过注释小部件来做到这一点吗?
@MyAnnotation(...)
public class SomeWidget extends Widget { ... }
然后找到所有用@MyAnnotation 注释的小部件?我找不到像这样的方法JAnnotationType.getAnnotatedTypes()
,但也许我只是瞎了眼?
注意:我可以使用Google Reflections库使其工作reflections.getTypesAnnotatedWith(SomeAnnotation.class)
,但我更喜欢使用 GeneratorContext,特别是因为在 DevMode 中重新加载应用程序时它会更好。