0

I'd like to write a method to add some objects to a generic collection (see below). If possible I wouldn't like to use generic types at class level (class Mapper<T extends BaseType).

import java.util.ArrayList;
import java.util.List;

class BaseType {
  public String getId() { return "Base";}
}

class TypeA extends BaseType {}

class TypeB extends BaseType {}

class Mapper {
  private final List<? extends BaseType> listA = new ArrayList<>();
  private final List<? extends BaseType> listB = new ArrayList<>();

  public List<? extends BaseType> getAList() {
    return listA;
  }

  public List<? extends BaseType> getBList() {
    return listB;
  }

  // HOW TO WRITE THIS METHOD CORRECTLY?
  public void addA(TypeA a) {
    listA.add(a);
    //    ^^^^^^ this doesn't compile :(
  }
}

0 Answers0