Duvida com <? e extends em atributo [Resolvido]

4 respostas
Allan_Barcelos

Olá,
Recentemente vi em um código o uso de <? e de extends em métodos, por exemplo:

private Set&lt;OWLPropertyExpression&gt;&lt;? extends OWLPropertyExpression, ? extends OWLPropertyRange&gt;&gt; properties = new TreeSet&lt;OWLPropertyExpression&gt;&lt;? extends OWLPropertyExpression, ? extends OWLPropertyRange&gt;&gt;();

Não entendi muito bem, para que é usado o <? , qual a sintaxe e o uso dele e do extends neste caso?

Abraço

4 Respostas

Rodrigo_Sasaki

Já chegou a estudar generics? O exemplo no seu caso:<? extends OWLPropertyExpression> quer dizer que serão aceitos como argumento instâncias de OWLPropertyExpression, ou de alguma subclasse dela

Allan_Barcelos

Não cheguei estudar generics, então quer dizer por exemplo que

Classe Abelha;
Abelha a &lt;? extends Mel&gt;

Seria que objetos Mel seriam aceitos na classe Abelha?

Rodrigo_Sasaki

Não… Essa sua sintaxe não fez muito sentido. Apesar de parecer que você entendeu o conceito.
Vou demonstrar com um exemplo simples. Primeiro a definição da herançaclass Animal{} class Cachorro extends Animal{}Agora o exemplo real: List<Animal> list = new ArrayList<Cachorro>();Isso não compila, você recebe um erro de compilação parecido com esse:

“Type mismatch: cannot convert from ArrayList to List”

Agora issoList<? extends Animal> list = new ArrayList<Cachorro>(); compila, entendeu?

Allan_Barcelos

Sim,
Vou pesquisar mais sobre assunto

Obrigado

Criado 14 de março de 2013
Ultima resposta 14 de mar. de 2013
Respostas 4
Participantes 2