Passar qualquer List<> como parametro

1,073 views
Skip to first unread message

Felipe Aron

unread,
May 28, 2013, 2:47:20 PM5/28/13
to androidb...@googlegroups.com
Galera,

Numa classe "base" meu construtor irá receber uma lista (List<>) qualquer. Sendo assim usei como parâmetro List<Object>:

public _BaseAdapter(Context ctx, List<Object> lista)

As classes que irão herdar fará o controle do tipo correto em questão.

Quero então passar uma lista - List<Pedido> para esse parâmetro, porém ao fazer isso ocorre erro dizendo que é preciso enviar um tipo List<Object>.

Como faço pra passar uma lista "genérica" como parâmetro?

--
Analista-Programador

Diogo Henrique

unread,
May 28, 2013, 2:49:43 PM5/28/13
to androidb...@googlegroups.com
vê assim Felipe List<?>...

Diogo Henrique
(83)87344178
Rede Sociais: 






2013/5/28 Felipe Aron <felip...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Felipe Aron

unread,
May 28, 2013, 2:53:32 PM5/28/13
to androidb...@googlegroups.com
Grande Diogo! :) Certinho!


2013/5/28 Diogo Henrique <diog...@gmail.com>

Fred

unread,
May 28, 2013, 3:02:15 PM5/28/13
to androidb...@googlegroups.com
opa, nem deu tempo, ia sugerir generic tambem, tu pode definir na classe tambem, algo como:

public class MinhaClasse<T> {
   private List<T> meuList...

   public MinhaClasse(List<T> lista){
      this.meuList = lista;
      ...


Ai quando for instanciar a classe ja passa qual o tipo

Minhaclasse<String | Object | WhatElse> classe - new ...



"Frederico Ferrão da Silva"

Felipe Aron

unread,
May 28, 2013, 3:13:05 PM5/28/13
to androidb...@googlegroups.com
Valeu Fred! Tua dica vai ser útil pra mim também! :)

Jonas Alves

unread,
May 28, 2013, 3:18:53 PM5/28/13
to androidb...@googlegroups.com
Usar wildcard (?) com generics em Java elimina uma das principais vantagens desse recurso: compile-time type safety. Inclusive, seu compilador e sua IDE te avisarão disso com um warning quando você tentar fazer cast dessa lista.

Recomendo a solução indicada pelo Fred.

Felipe Aron

unread,
May 28, 2013, 3:34:14 PM5/28/13
to androidb...@googlegroups.com
Jonas, entendi o que você disse. Realmente é mais seguro saber o tipo. Vou dar uma estudada melhor sobre o assunto.

No meu caso, eu apenas uso o cast para pegar um item da lista. Exemplo:

Pedido pedido = (Pedido) lista.get(position);

Porém a IDE não soltou nenhum Waning com relação a isso.

Jonas Alves

unread,
May 28, 2013, 4:06:38 PM5/28/13
to androidb...@googlegroups.com
Se você fizer cast de um List<?> para um List<Pedido>, por exemplo, você vai ter um warning sobre unchecked cast.

O warning não ocorreu no seu exemplo porque você fez cast de um Object.

Abs,


2013/5/28 Felipe Aron <felip...@gmail.com>
Reply all
Reply to author
Forward
0 new messages