У меня есть класс
public class ReportItem<ReportType extends Report>{ }
и класс
public abstract class Report implements Iterable<ReportItem>{
private List<ReportItem<? extends Report> > itemList;
public void add(ReportItem<? extends Report> item){
itemList.add(item);
}
//Some other staff
}
public class ConcreteReport extends Report{
//Some staff
}
Дело в том, что метод add(ReportItem<? extends Report>)
небезопасен в том, как я мог предоставить элементы, не привязанные к текущему отчету, но связанный с каким-то другим, и компилятор не будет жаловаться.
Можно ли написать метод add
безопасным способом, т.е. мы могли бы передать в качестве аргумента только то, что ReportItem<T>
, где T - тип текущего отчета.