Estou com dificuldade para perguntar, vou tentar mostrar com um exemplo:
public abstract class Filho<F extends Filho> {
private Pai<F> pai;
//...
}
public class Pai<F extends Filho> {
private Set<F> filhos;
//...
}
Isto vai funcionar, mas sempre que eu estender a classe Filho eu terei que fazer algo assim:
public class Lalala extends class Filho<Lalala> {
//...
}
Não há uma forma de informar que este atributo pai da classe Filho deve ser tipado com a classe que estende Filho que tiver instanciada sem tipar a classe Filho? Por exemplo, se eu estou usando a classe Lalala, o atributo pai deve ser tipado para Lalala, seu atributo filhos só deve aceitar instâncias de Lalala. Escrever este último trecho de código para mim é muito estranho, preferia algo assim:
public class Lalala extends class Filho {
//...
}
e
public abstract class Filho {
private Pai<CLASSE_QUE_ESTENDE_FILHO> pai;
//...
}
Entenderam a questão? Há como fazer isso?
Muito obrigado!! :)