por que não posso usar super na declaração de uma classe genérica, por que a classe com extends compila e a classe com super não?
class NaoCompila<T super Number> {}
class Compila<T extends Number> {}
por que não posso usar super na declaração de uma classe genérica, por que a classe com extends compila e a classe com super não?
class NaoCompila<T super Number> {}
class Compila<T extends Number> {}
A classe NaoCompila não esta estendendo uma outra classe,
O comando Super você precisará usá-la toda vez que desejar referenciar um recurso (método/membro) de uma superclasse…
E vc esta fazendo isso na classe Compila
tá certo tudo tens a informação de qual erro ta dando? ou poderias enviar o código completo? se for este tá tudo certinho .
AutorMensagem alexmonassa tá certo tudo tens a informação de qual erro ta dando? ou poderias enviar o código completo? se for este tá tudo certinho .
Essa classe nao vai compilar pq vc nao esta estendendo o objeto T para poder usar os recursos dela atraves do Super..
class NaoCompila
por isso nao compila..
super() faz uma chamada ao construtor padrão da classe-pai.
Exemplo:public class Filha extends Pai {
public Filha() {
super();
System.out.println("Chamando o construtor da classe-filha...");
}
public static void main(String[] args) {
new Filha();
}
}
E, se compilasse, não faria sentido algum. Você não poderia afirmar que T seria um Number porque ele poderia ser qualquer objeto acima na hierarquia de classes.
Com o extends, você pode afirmar, com certeza, que T é, pelo menos, um Number. Isso faz sentido.
E onde o super faz sentido? Filtrando coleções, por exemplo:
Aqui podemos passar um filtro de AnnotatedElement para filtrar uma coleção de Field ou Method (que implementam AnnotatedElement).
AutorMensagem alexmonassa tá certo tudo tens a informação de qual erro ta dando? ou poderias enviar o código completo? se for este tá tudo certinho .Essa classe nao vai compilar pq vc nao esta estendendo o objeto T para poder usar os recursos dela atraves do Super..
class NaoCompila{} por isso nao compila..
super() faz uma chamada ao construtor padrão da classe-pai.
Exemplo:public class Filha extends Pai { public Filha() { super(); System.out.println("Chamando o construtor da classe-filha..."); } public static void main(String[] args) { new Filha(); } }
Você está certo, mas pelo motivo errado. O super que ele se referiu foi ao uso do super na tipagem genérica.