Oli*_*TIN 7 java generics wildcard
我找不到任何通配符不能替换通配符的示例.例如:
public void dummy(List<? extends MyObject> list);
Run Code Online (Sandbox Code Playgroud)
相当于
public <T> void dummy(List<T extends MyObject> list);
Run Code Online (Sandbox Code Playgroud)
要么
public <T> List<? extends T> dummy2(List<? extends T> list);
Run Code Online (Sandbox Code Playgroud)
相当于
public <T, U> List<U extends T> dummy(List<U extends T> list);
Run Code Online (Sandbox Code Playgroud)
因此,我不承认为什么要创建通配符,因为泛型已经在完成这项工作.有什么想法或意见吗?
不,它并不总是可以替换的.
List<? extends Reader> foo();
Run Code Online (Sandbox Code Playgroud)
不等于
<T> List<T extends Reader> foo();
Run Code Online (Sandbox Code Playgroud)
因为你不知道什么T时候打电话foo()(你不知道什么List<T>会foo()回来.同样的事情也发生在你的第二个例子中.