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 :(
}
}