3232 */
3333public class CompositeItemReader <T > implements ItemStreamReader <T > {
3434
35- private final List <ItemStreamReader <T >> delegates ;
35+ private final List <ItemStreamReader <? extends T >> delegates ;
3636
37- private final Iterator <ItemStreamReader <T >> delegatesIterator ;
37+ private final Iterator <ItemStreamReader <? extends T >> delegatesIterator ;
3838
39- private ItemStreamReader <T > currentDelegate ;
39+ private ItemStreamReader <? extends T > currentDelegate ;
4040
4141 /**
4242 * Create a new {@link CompositeItemReader}.
4343 * @param delegates the delegate readers to read data
4444 */
45- public CompositeItemReader (List <ItemStreamReader <T >> delegates ) {
45+ public CompositeItemReader (List <ItemStreamReader <? extends T >> delegates ) {
4646 this .delegates = delegates ;
4747 this .delegatesIterator = this .delegates .iterator ();
4848 this .currentDelegate = this .delegatesIterator .hasNext () ? this .delegatesIterator .next () : null ;
@@ -52,7 +52,7 @@ public CompositeItemReader(List<ItemStreamReader<T>> delegates) {
5252 // opening resources early for a long time
5353 @ Override
5454 public void open (ExecutionContext executionContext ) throws ItemStreamException {
55- for (ItemStreamReader <T > delegate : delegates ) {
55+ for (ItemStreamReader <? extends T > delegate : delegates ) {
5656 delegate .open (executionContext );
5757 }
5858 }
@@ -79,7 +79,7 @@ public void update(ExecutionContext executionContext) throws ItemStreamException
7979
8080 @ Override
8181 public void close () throws ItemStreamException {
82- for (ItemStreamReader <T > delegate : delegates ) {
82+ for (ItemStreamReader <? extends T > delegate : delegates ) {
8383 delegate .close ();
8484 }
8585 }
0 commit comments