findTypeParameters method
Finds the type parameters of a generic class.
Parameters:
parentClass
: The class representing the generic type.
Returns:
- A list of Class instances representing the type parameters.
Example
final listClass = await loader.loadClass<List<String>>('dart:core/list.dart.List');
final typeParams = loader.findTypeParameters(listClass);
print(typeParams.map((arg) => arg.qualifiedName)); // e.g., ["dart:core/string.dart.String"]
Implementation
@override
List<Class> findTypeParameters(Class parentClass) {
_checkClosed();
final cacheKey = "${_buildCacheKey(parentClass)}:typeParameters";
// Check cache first
final cached = _typeParameterCache[cacheKey];
if (cached != null) {
_hitCount++;
return List.from(cached);
}
_missCount++;
// Compute classes
final args = parentClass.getTypeDeclaration().getTypeArguments();
final classes = args.map((tp) => _getFromLink(tp, parentClass.getProtectionDomain(), useType: true)).toList();
// Cache result
_typeParameterCache[cacheKey] = classes;
return List.from(classes);
}