我们来考虑一个课程:
public class Foo<T> {
public List<String> list = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)
我作为参数传递给方法.
我有一个问题,理解为什么这里的类型String没有解决:
public void test(Foo t) {
t.list.get(0).contains("test");
}
Run Code Online (Sandbox Code Playgroud)
并且在这里t.list处理的List<Object>一切都很好:
public void test(Foo<?> t) {
t.list.get(0).contains("test");
}
Run Code Online (Sandbox Code Playgroud)
并且t.list是List<String>.
关于类型擦除的其他问题已被链接,从不同角度处理问题.在不知道我自己的问题的答案的情况下,我没有看到连接,这就是为什么我不认为这个问题是重复的.