Oque este metodo espera como parametro

4 respostas Resolvido
D

Sempre que dou uma olhada no codigo do jdk do java fico sem entender oque esta acontecendo rs, entao resolvi perguntar aqui pra ver se consigo compreender.

tendo este codigo como exemplo

default void sort(Comparator<? super E> c) {
    Collections.sort(this, c);
}

oque ele espera como parametro? estou acostumado a ver codigo simples, onde tem um tipo e o nome dele, ex: Comparator comparator, agr parametro como esse Comparator<? super E> c ja nao entendo nada rs. mas sei que oque esta entre os <>representa o tipo do objeto Comparator, mas oque é esse <? super E ?> ???

4 Respostas

staroski

É qualquer tipo de dado que tenha como superclasse o tipo E.

D

mas porque o “?” antes ? sei que ele representa um tipo curinga, mas ai o ? e o super E parecem referenciar só um dado já que não existe separação por virgula.

e esse dado que tem a superclasse o tipo E é que o construtor da superclasse tem que receber um E? e a classe deve fazer a chamada do super da superclasse? e qual a diferença entre E e T?

staroski
Solucao aceita

O ? significa “qualquer tipo”.
O E é o tipo de dado genérico utilizado.
Logo o ? super E significa "qualquer tipo que tenha o E como superclasse.

Não há nenhum tipo T no seu exemplo.
Mas assim, geralmente um tipo genérico é definido somente com uma letra, se tu tem mais tipos genéricos você usa letras diferentes.

D

agora entendi, muito obrigado, quanto ao T é porque eu via ele sendo usado varias vezes, então queria saber a diferença de T e E, mas já achei um artigo que trava de mais abreviações tbm e entendi

Criado 2 de maio de 2018
Ultima resposta 2 de mai. de 2018
Respostas 4
Participantes 2