Generics Dart:在抽象类中重写泛型函数时出现类型错误

Generics Dart:在抽象类中重写泛型函数时出现类型错误,generics,dart,overriding,abstract,Generics,Dart,Overriding,Abstract,在飞镖/颤振中,我有以下课程: abstract class Base { V foo<V, T>(T arg); } class Concrete implements Base { @override TypeA foo<TypeA, TypeB>(TypeB arg) { //... do something and return TypeA variable x return x; } } 抽象类基类{ V

在飞镖/颤振中,我有以下课程:

abstract class Base {
   V foo<V, T>(T arg);
}

class Concrete implements Base {
   @override
   TypeA foo<TypeA, TypeB>(TypeB arg) {
       //... do something and return TypeA variable x
       return x;
   }
}
抽象类基类{
V foo(T arg);
}
类的具体实现基础{
@凌驾
TypeA foo(TypeB arg){
//…执行某些操作并返回一个变量x
返回x;
}
}

TypeA和TypeB是用户定义的类型。但是,我得到了错误消息:问题是这里的
TypeA
TypeB
不是用户定义的类型。它们是与用户定义类型具有相同名称的类型变量。 对
Concrete.foo
的每次调用都需要传递类型参数,主体需要对任何类型参数起作用(这就是“泛型”的意思,它通常对任何类型起作用)

如果试图从
Concrete.foo
返回用户定义类型
TypeA
的内容,则会出现错误,因为它没有类型变量
TypeA
。。。对于可以作为类型参数传递的任何类型

我猜您需要的是泛型类:

抽象类基类{
V foo(T arg);
}
类的具体实现基础{
@凌驾
TypeA foo(TypeB arg){
//…执行某些操作并返回一个变量x
返回x;
}
}
它使用实际的
TypeA
TypeB
参数化接口