Dúvida simples com Generic

5 respostas
adrianostanley

Pessoal, só uma dúvida meio boba mas que tá me dando uma dor de cabeça danada aqui…

public class GenericForm<E> extends JPanel...

Em um momento nesta classe, preciso chamar um método com a seguinte assinatura:

metodo(Class arg0, String arg1)

Enfim, como eu passo a classe representada pelo <E>?

Obrigado,
Adriano

5 Respostas

von.juliano

Assim:GenericForm<SuaClasse> gf = new GenericForm<SuaClasse>(); ... metodo(SuaClasse.class, "string");
Blz? Flw! :thumbup:

ddduran

na hora que você for instanciar o seu objeto, algo como

GenericForm<MinhaClasseRepresentativa> gf = new GenericForm<MinhaClasseRepresentativa>();

ai seu metodo pode ser assim

metodo(Class<E> arg0, String arg1)
sergiotaborda

adrianostanley:
Pessoal, só uma dúvida meio boba mas que tá me dando uma dor de cabeça danada aqui…

public class GenericForm<E> extends JPanel...

Em um momento nesta classe, preciso chamar um método com a seguinte assinatura:

metodo(Class arg0, String arg1)

Enfim, como eu passo a classe representada pelo <E>?

Desta forma:

metodo(Class<E> arg0, String arg1)

P.S. Espero bem que esses argumentos tenham nomes e que isto seja só um exemplo :wink:

G

Bele cara.

O normalmente usamos é receber a class no contrutor, e atribuí-la a uma variável de instância.

private Class<?> classe;

public GenericForm(Class<?> classe){

this.classe = classe;

}

Coloquei o ? por que na especificação a ? siginifica qualquer class, assim evita o warning de compilação.

LPJava

gilberto.souza:
Bele cara.

O normalmente usamos é receber a class no contrutor, e atribuí-la a uma variável de instância.

private Class<?> classe;

public GenericForm(Class<?> classe){

this.classe = classe;

}

Coloquei o ? por que na especificação a ? siginifica qualquer class, assim evita o warning de compilação.

? é para conjunto e nao para vc definir tipos de genericos… vc pode usar qualquer identificador valido e ? nao é um identificador valido.
Vc está confudindo usar isso:

List<?> lista = new ArrayList<Integer>();

com seu codigo acima… é algo complentamente diferente…

flw!

Criado 6 de dezembro de 2007
Ultima resposta 6 de dez. de 2007
Respostas 5
Participantes 6