Пример использования подстановочных типов
public class ParentClass {}
public class ChildrenClass1 extends ParentClass {} public class ChildrenClass2 extends ParentClass {}
public class OurClass<T> { private T item;
public T getItem() { return item;
}
public void setItem(T item) { this.item = item;
}
}
Пример использования подстановочных типов
public class Main {
public static void main(String[] args) {
OurClass<? extends ParentClass>
ob = new OurClass<ChildrenClass1>(); // !!! setItem(? extends ParentClass item)
ob = new OurClass<ChildrenClass2>(); ob = new OurClass<ParentClass>();
ChildrenClass1 c1 = new ChildrenClass1(); ChildrenClass2 c2 = new ChildrenClass2();
ob.setItem(cl);
ob.setItem(c2);
}
}
Подстановка без ограничений
Pair<?>
?getFirst()
– результат можно присвоить только Object
void setFirst(?)
–вызвать нельзя никогда
В«сыром» типе
Object getFirst() void setFirst(Object)