Итак, вам нужно понять, как стирание классов работает в Java.Общая информация никогда не передается в контейнер, она применяется только на стороне компилятора. Вот хороший учебник, объясняющий это .
Самый простой способ достичь того, чего вы хотите достичь - это иметь соответствующий интерфейс, например:
public interface WithSales {
Sales sales();
}
и убедитесь, что ваши компоненты влияют на них.Затем вы объявляете свои обертки соответствующим образом, чтобы объявление списка выглядело так:
public List<Group1<? extends WithSales>> list = new ArrayList<>();
Тогда остальная часть вашего кода будет работать нормально, если все экземпляры Component реализовать WithSales