在的Xtext,我想寫一個實用方法返回在集合類型由JvmTypeReference代表由解析器創建的集合型(通用型),我需要知道的類型參數: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>
我期望方法返回java.lang.String
, 示例2:用於輸入java.util.Set<a.b.m.Book>
返回a.b.m.Book
。
我需要我的生成器的集合類型參數類型。
然而,有前途的探測typeReferences.getArgument(..)
返回JvmParameterizedTypeReference: E
其中getType()
給出JvmTypeParameter <E> java.util.List
。嗯。我進入了盲人的小巷。
它甚至可能或類型擦除也適用於JvmTypeReference
?我希望不是。
謝謝你的任何提示。