: Dart
Map<Class<? extends SomeClass>, SomeOtherClass>
.type/.class, ( , , , , ).
Map<? extends SomeClass, SomeOtherClass>
Map<SomeClass, SomeOtherClass> aMap;
Dart, , SomeClass, SomeClass. , :
main() {
Map<Test, String> aMap = new HashMap<Test, String>();
var test = new Test("hello");
var someTest = new SomeTest("world");
var notATest = new NotATest();
aMap[test] = test.msg;
aMap[someTest] = someTest.msg;
aMap[notATest] = "this fails";
}
class Test implements Hashable {
Test(this.msg);
int hashCode() => msg.hashCode();
final String msg;
}
class SomeTest extends Test {
SomeTest(String message): super(message);
}
class NotATest implements Hashable {
int hashCode() => 1;
}
:
type 'NotATest' is not a subtype of type 'Test' of 'key'.