Xtext で、パーサーによって作成された JvmTypeReference によってコレクション型が表されるコレクション型 (ジェネリック型) を返すユーティリティ メソッドを作成しようとしています。型パラメーターを知る必要があります。
@Inject TypeReferences typeReferences;
public JvmType getCollectionType(JvmTypeReference clazz) {
if (typeReferences.isInstanceOf(clazz, Collection.class)) {
collectionType = typeReferences.getArgument(clazz, 0);
return collectionType;
}
}
例 1: 入力java.util.List<String>の場合、メソッドは を返すと予想します。例 2:java.lang.String入力の場合java.util.Set<a.b.m.Book>は を返しa.b.m.Bookます。
ジェネレーターのコレクション型パラメーター型が必要です。
しかし、有望に聞こえますが、どこにtypeReferences.getArgument(..)返されますか。うーん。袋小路に入りました。JvmParameterizedTypeReference: EgetType()JvmTypeParameter <E> java.util.List
それは可能ですか、それとも型消去は にも適用されJvmTypeReferenceますか? ないことを願っています。
ヒントをありがとう。