Classe com técnica "Generic Type"

Pessoal,

Primeiramente, pesquisei no fórum e não encontrei nenhuma solução à respeito de generic type.

O que estou tentando fazer é que a classe abaixo funcione como generic type, com uso de “static”. Veja abaixo:


package trabalhov;

import java.util.ArrayList;

public class ListagemTXT<E> {

    private static ArrayList<E> listagem;

    public static ArrayList<E> getListagem() {
        return listagem;
    }

    public static void setListagem(ArrayList<E> aListagem) {
        listagem = aListagem;
    }

}

Agradeço desde já.

Um abraço,
Vinicius.

eu acredito que isso é um problemão, o teu E ainda não é nada, será algo em tempo de execução, não há como definir uma variável static sem uma referencia(generic) concreta. por favor corrijam se eu estiver errado.

Bom…
a) Não use o tipo concreto (ArrayList) para retornar ou receber parâmetros. Use-o apenas para criar uma instância, se for o caso.
b) Eu até tirei os warnings mas acho que não está certo. Veja bem:

import java.util.*;

// Exemplo de como generics e statics não se misturam muito bem.
// Evite fazer isto, por favor!

public class ListagemTXT<E> {  
     private static List<?> listagem;  
  
     @SuppressWarnings ("unchecked")
     public static <E> List<E> getListagem() {  
         return (List<E>) listagem;  
     }  
   
     public static <E> void setListagem(List<E> aListagem) {  
         listagem = aListagem;  
     }  
}

Dica: evite, por favor, usar esse tipo de coisa, a menos que você saiba muito bem o que está fazendo (o que não parece ser seu caso :slight_smile: )

A única vantagem de usar genérics é poder definir em tempo de execução, o tipo de instância. Se vc pretende usar um atributo estático, isto já não faz tanto sentido, concorda ?

Para chamar seu código seria feito algo do tipo:

List<String> lista = ListagemTXT.getListagem();

Onde, o correto para usar generics seria:

List<String> lista = new ListagemTXT<String>().getListagem();

se a lista for de Object não resolve?