Dart中继承带泛型参数的类时dynamic能否替换为自定义泛型
报错原因
你在QuestionPageBaseState的泛型约束中直接使用了U、V两个标识符,但没有将它们提前声明为类的泛型参数,Dart无法识别未定义的类型标识符,因此抛出了对应错误,该需求是完全可以实现的,只需要补充泛型参数声明即可。
修正方案
将U、V也添加到QuestionPageBaseState的泛型参数列表中即可,示例代码如下:
// 无类型约束的写法 abstract class QuestionPageBaseState<T extends Question<U, V>, U, V> { // 类的具体实现逻辑 }
如果U、V有明确的类型范围,也可以给这两个泛型参数添加上限约束:
// 带类型约束的示例,可根据实际业务调整约束规则 abstract class QuestionPageBaseState<T extends Question<U, V>, U extends num, V extends String> { // 类的具体实现逻辑 }
可选简化方案
如果你不需要在QuestionPageBaseState内部单独使用U、V类型,也可以保留原来的dynamic写法,不会影响Question子类的功能使用。
内容的提问来源于stack exchange,提问作者Quentin
相关产品推荐
相关产品推荐

