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 )
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();