Restricting the parameterized type
When implementing a generic type,you might want to limit the types of its parameters.You can do this using extends.
1. class Foo<T extends SomeBaseClass> {
2. // Implementation goes here...
3. String toString() => "Instance of 'Foo<$T>'";
4. }
6. class Extender extends SomeBaseClass {...}
It’s OK to use SomeBaseClass or any of its subclasses as generic argument:
1. var someBaseClassFoo = Foo<SomeBaseClass>();
2. var extenderFoo = Foo<Extender>();
It’s also OK to specify no generic argument:
1. var foo = Foo();
2. print(foo); // Instance of 'Foo<SomeBaseClass>'
Specifying any non-SomeBaseClass type results in an error:
1. var foo = Foo<Object>();
