在 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
?我希望不是。
谢谢你的任何提示。