Generics как создавать списки с разными типами

Когда читал про Generics, все казалось просто и понятно, пока не дошло до реализации У меня есть несколько классов

public class ItemUser implements Serializable {
    private int id;
    private String name;
    ...
}
public class ItemCity implements Serializable {
    private int id;
    private String name;
    ...
}

и т.д. в этом классе мне надо создать список с одним из этих типов

public class Data {
  private List<?> list;

  public List<?> getList(...) {
     return list = 
  }
  public void init() {
     list = getList(...);
  }
}

Как это сделать?

Вот так будет правильно?:

public class Data<T> {
  private List<T> list;
  public Data(T myType){
     list = new ArrayList<T>();
  }
}
public class ItemData {
  private Data<T> data;
  public void init() {
     data = new Data<ItemUser>();
  }
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Думаю можно так Generic

public class Data<T> {
  private List<T> list;

  public List<T> getList(...) {
     return list = 
  }
  public void init() {
     list = getList(...);
  }
}

либо конкретный класс

public class ItemUserData {
  private List<ItemUser> list;

  public List<ItemUser> getList(...) {
     return list = 
  }
  public void init() {
     list = getList(...);
  }
}

Можно обобщить тогда проводить типы будите в ручную

public class Data {
  private List<Object> list;

  public List<Object> getList(...) {
     return list = 
  }
  public void init() {
     list = getList(...);
  }
}
→ Ссылка