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: E
getType()
JvmTypeParameter <E> java.util.List
それは可能ですか、それとも型消去は にも適用されJvmTypeReference
ますか? ないことを願っています。
ヒントをありがとう。