Generatorsを使用してクラスを作成する際に、あるタイプのすべてのサブクラスを検出することができます。GWT GeneratorContextを使用して@MyAnnotationで注釈付けされたすべてのクラスを見つけることは可能ですか?
public class SomeWidget extends ContentWidget { ... }
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();
が、私は似た何かをしたいのですが、代わりのは(インターフェースをまたは実装)クラスを拡張する:あなたはGWTのショーケースのソースで例えば、この手法を見つけることができます(full codeを参照してください)
、私もでこれを行うことができますか?ウィジェットに注釈を付けますか?
@MyAnnotation(...)
public class SomeWidget extends Widget { ... }
そして、@MyAnnotationで注釈付けされたすべてのウィジェットを検索しますか? JAnnotationType.getAnnotatedTypes()
のようなメソッドを見つけることができませんでしたが、おそらく私は盲目ですか?
注:私はそれがreflections.getTypesAnnotatedWith(SomeAnnotation.class)
を使用して、Google Reflectionsライブラリーで動作させることができましたが、私はDevModeからでアプリをリロードするとき、これはかなり良く働く特にので、代わりにGeneratorContextを使用して好みます。
+1、これは間違いなく機能し、このアプローチは考慮しませんでした。これは一種の凶暴な方法です(誰も何百万ものタイプを持つことはないのであまり重要ではありません)。あらかじめ定義された解決策がない場合、私はあなたの答えを喜んで受け入れます。 –
それはほとんどのJavaの観点からは強引な力を感じますが、ソースパスの中でそれほど悪くはありません。さらに、Google Reflectionsライブラリの機能も同様です。現在、クラスパスにあるすべてのクラスを見つけて調べます。 –