class SomeClass<E> {
Map<String, String> someMethod();
}
和用法
SomeClass a = new SomeClass();
a.someMethod().get("foo") // returns object, not string!
//This code would not even compile
String s = a.someMethod().get("foo");
但是,如果我从SomeClass中删除泛化(<E>) - 它可以工作.
如果我将此方法提取到接口并在声明中使用接口,它也可以工作:
interface Foo {
Map<String, String> someMethod();
}
class SomeClass implements Foo {
//.....
}
Foo foo = new SomeClass();
String s = foo.someMethod().getString("A");//it works
为什么会这样?我在哪里可以阅读它?什么是最好的解决方案?谢谢.