Рассмотрим класс:
public class Foo<T> {
public List<String> list = new ArrayList<>();
}
что я передаю в качестве параметра метод.
У меня проблема с пониманием, почему здесь тип String
не разрешен:
public void test(Foo t) {
t.list.get(0).contains("test");
}
и t.list
рассматривается как List<Object>
тогда как здесь все работает нормально:
public void test(Foo<?> t) {
t.list.get(0).contains("test");
}
и t.list
- List<String>
.
Другие вопросы о Type Erasure, которые были связаны, подходят к проблеме под другим углом. Не зная ответа на свой вопрос, я не видел связи, и поэтому я не думаю, что этот вопрос является дубликатом.