为什么编译器没有弄清楚我在下面的代码片段中使用了错误的类型?
这是一个带有通用的接口。
let shatedData = {
testIndex: 0
}
请注意不使用interface Foo<X> {
Map<String, String> getMap();
X addFoos(int foos);
}
的getMap()方法。
为什么只用警告编译?
X
只接受有关不安全操作的警告,接受地图的任何类型。
但是,如果添加了通配符,编译器将重新插入并仅允许正确的类型。
void getMapFromFoo(Foo foo) {
Map<Thread, java.util.GregorianCalendar> why = foo.getMap();
}
发生了什么事?