Почему бы и нет?Все, что вам нужно, - это соответствующий универсальный тип для аргументов List и item, который удовлетворяет обоим параметрам вызова, вы можете добиться этого довольно просто:
import java.util.ArrayList;
import java.util.List;
public class TestClass {
private class Parent {
};
private class Child extends Parent {
};
private class GrandChild extends Child {
};
public <T extends Parent> void compilesNow(final List<T> genericList, final T itemToAdd) {
genericList.add(itemToAdd);
}
public void addSomeDescendents() {
final List<Parent> list = new ArrayList<Parent>();
compilesNow(list, new Parent());
compilesNow(list, new Child());
compilesNow(list, new GrandChild());
}
}
EDIT: Извините, я пропустил бит об исключении GrandChild ..Однако мой пример - это шаг вперед к тому, как можно использовать Generics, чтобы этот сценарий хотя бы компилировался