Skip to content

Instantly share code, notes, and snippets.

@nbhusare
Last active May 24, 2024 06:48
Show Gist options
  • Save nbhusare/aa53500271f58c832ed56a47cdb1f5af to your computer and use it in GitHub Desktop.
Save nbhusare/aa53500271f58c832ed56a47cdb1f5af to your computer and use it in GitHub Desktop.
Xtext - Creating a Generic type reference
// Approach 01
@Inject private TypeReferences typeReferences;
private LightweightTypeReference getGenericType(ITypeComputationState state, Class<?> t, Class<?>... t1) {
var resourceSet = state.getReferenceOwner().getContextResourceSet();
var rawType = typeReferences.getTypeForName(t, resourceSet).getType();
var typeParam = typeReferences.getTypeForName(t1[0], resourceSet);
return state.getReferenceOwner()
.toLightweightTypeReference(typeReferences.createTypeRef(rawType, typeParam);)
}
// Approach 02
@Inject private JvmTypeReferenceBuilder.Factory typeRefBuilderFactory;
private LightweightTypeReference getGenericType(ITypeComputationState state, Class<?> t, Class<?>... t1) {
var jvmTypeReferenceBuilder = typeRefBuilderFactory.create(resourceSet);
var parameterizedTypeRef = jvmTypeReferenceBuilder.typeRef(t, jvmTypeReferenceBuilder.typeRef(t1[0]));
return state.getReferenceOwner().toLightweightTypeReference(parameterizedTypeRef);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment