限制泛型参数类型
实现泛型类型时,您可能希望限制其参数的类型。 您可以使用扩展来执行此操作。
class Foo<T extends SomeBaseClass> {
// Implementation goes here...
String toString() => "Instance of 'Foo<$T>'";
}
class Extender extends SomeBaseClass {...}
这样可以使用SomeBaseClass
或其任何子类作为通用参数:
var someBaseClassFoo = Foo<SomeBaseClass>();
var extenderFoo = Foo<Extender>();
也可以不指定泛型参数:
var foo = Foo();
print(foo); // Instance of 'Foo<SomeBaseClass>'
指定任何非SomeBaseClass
类型会导致错误:
var foo = Foo <Object>();