Java adicionando a uma lista genérica de tipo desconhecido
Eu me deparei com algo que nunca encontrei antes em Java, ou seja, preciso criar uma nova instância, por exemplo, a classe ArrayList em tempo de execução sem atribuir um tipo conhecido e, em seguida, adicionar dados à lista. Parece um pouco vago, então aqui está um exemplo:
Class<?> c = i.getClass();
Constructor<?> con = ArrayList.class.getConstructor();
ArrayList<?> al = (ArrayList<?>)con.newInstance();
al.add("something");
Agora, o motivo pelo qual estou fazendo isso, em vez de usar apenas genéricos, é porque os genéricos já estão sendo usados intensamente e a variável "i" neste exemplo pode ser usada como tipo "?". Eu realmente preferiria não inserir outro genérico, pois isso causaria mais trabalho ao usuário e seria muito menos flexível no design final. Existe alguma maneira de usar algo como abaixo (Nota: o que está abaixo não funciona). Alguém tem ideias?
ArrayList<c> al = (ArrayList<c>)con.newInstance();