Dieval_Guizelini 8 de jun. de 2008
Você já tentou:
public class MinhaClasse {
public void adicionar( <? implements X> obj )
{
}
}
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
fw
scarton 8 de jun. de 2008
Dieval Guizelini:
Você já tentou:
public class MinhaClasse {
public void adicionar( <? implements X> obj )
{
}
}
O correto não seria
public class MinhaClasse {
public void adicionar( <? extends X> obj )
{
}
}
mesmo X sendo uma interface?
abraços
Dieval_Guizelini 9 de jun. de 2008
scarton:
Dieval Guizelini:
Você já tentou:
O correto não seria
public class MinhaClasse {
public void adicionar( <? extends X> obj )
{
}
}
mesmo X sendo uma interface?
abraços
Scarton,
depende do que você quer, se quiser uma subclasse é extends, se quiser uma classe que implementa um interface é implements mesmo.
Conforme a declaração do danielbchaves:
E conforme o link que passei:
<blockquote>
2 Defining Simple Generics
Here is a small excerpt from the definitions of the interfaces List and Iterator in package
java.util:
public interface List { void add(E x);
Iterator iterator();
}public interface Iterator { E next();
boolean hasNext();
}
This should all be familiar, except for the stuff in angle brackets. Those are the
declarations of the formal type parameters of the interfaces List and Iterator.</blockquote>
ok
scarton 9 de jun. de 2008
Olá Dieval,
estou estudando para a certificação e no livro da Kathy diz q é extends mesmo que seja uma interface…
< blockquote > First , the < ? extends Animal > means that you can take any subtype of Animal ;
however , that subtype can be EITHER a subclass of a class ( abstract or concrete )
OR a type that implements the interface after the word extends . In other words ,
the keyword extends in the context of a wildcard represents BOTH subclasses and
interface implementations . There is no < ? implements Serializable > syntax . If
you want to declare a method that takes anything that is of a type that implements
Serializable , you ’ d still use extends like this :
void foo(List<? extends Serializable> list) // odd, but correct
// to use “extends”
Observe q neste exemplo foi utilizado extends para a interface Serializable, entao no exemplo do nosso amigo não seria <? extends X> mesmo ?
abraços
Paulo_Silveira 9 de jun. de 2008
a sintaxe é extends no generics independente se é interface ou classe mesmo… até porque voce pode aceitar mais de um argumento (T extends Runnable, X, Y)
Giulliano 9 de jun. de 2008
Dieval Guizelini:
Você já tentou:
public class MinhaClasse {
public void adicionar( <? implements X> obj )
{
}
}
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
ai forçou a amizade…rss…
danielbchaves 9 de jun. de 2008
vamos lá, pelo que entendi não poderia usar algo do tipo
public class MinhaClasse & lt ; T & gt ; {
public void adicionar ( & lt ; T extends MinhaInterface & gt ; obj )
{
}
}
para dizer que quero qualquer objeto que implemente a minha interface,
só vou poder usar isso para dizer que uma collection recebida como parâmetro contenha somente objetos do tipo MinhaInterface
public void adicionar ( List & lt ; T extends MinhaInterface & gt ; obj )
{
}
é isso mesmo?
sergiotaborda 9 de jun. de 2008
danielbchaves:
Gostaria de implementar uma classe que fosse mais ou menos assim…
public class MinhaClasse < T > ;
{
public void adicionar ( T obj )
{
}
}
Gostaria de que o T só pudesse ser um objeto da interface X, teria como fazer isso? Pois se eu colocar o nome da interface no lugar do T não muda nada, ali é só um nome e tanto faz o que escrevo
public class MinhaClasse < T extends X > ;
{
public void adicionar ( T obj )
{
}
}
// ou
public class MinhaClasse ;
{
public < T extends X > void adicionar ( T obj )
{
}
}
Dependendo se é a classe que é tipada ou apenas o método. Mas para o método seria mais facil simplesmente
public class MinhaClasse;
{
public void adicionar( X obj )
{
}
}
danielbchaves 9 de jun. de 2008
bom… essa última pergunta foi mal projetada, esqueçam ela…
Aproveitando a deixa…
public class MinhaClasse & lt ; T & gt ;
dentro do meu código, como posso saber qual a classe que é T quando o objeto for criado?