Não sei se deveria chamar esse exemplo de tipo genérico ou classe tipada. Vamos lá.
Tenho a Classe Fórum, que possui uma coleção da classe postagem:
public class Forum<T> {
private String mensagem;
private Usuario user;
private ArrayList<Postagem> postagens = new ArrayList<Postagem>();
private ArrayList<Listener> observers = new ArrayList<Listener>();
public <T> void addPostagem(String mensagem, Usuario user) {
Postagem post = new Postagem(mensagem, user);
postagens.add(post);
}
public ArrayList<Postagem> getPostagens() {
return postagens;
}
}
A classe Postagem, que possui um atributo do tipo Usuario (associação):
public class Postagem<T> {
private Usuario user;
private String mensagem;
public Postagem(String mensagem, Usuario user) {
this.mensagem = mensagem;
this.user = user;
}
}
O que procede é o seguinte, além da classe usuário, tenho a classe UsuarioRegistrado e Anônimo e ambas herdam da calsse Usário e possuo a classe Administrador que herda da classe UsuárioRegistrado.
Quando instancio um Fórum do tipo
Obrigado, espero que tenha sido claro o suficiente sobre minha dúvida.