Bom, primeiramente obrigado antecipadamente se alguem responder.
To com um probleminha aqui no uso de tipo generico.
Resumidamente:
Meu programa vai ter uma entrada (JOptionPane) onde o usuário vai digitar um tipo do java (Integer, String, etc).
Em seguida, quero criar uma List tipada com esse tipo digitado pelo usuário.
Obs.: A verificação se a classe digitada é ou não válida será feita pelo java.lang.reflect.*
Vamos ao “codigo exemplo” (ou quase isso xD)
[code]public static void main(String[] args) {
Object tipo = JOptionPane.showInputDialog("Digite um tipo...");
List<tipo> l = new List(); //<-- Essa linha não vai compilar inicialmente...
}[/code]
Bom, estou aberto a sugestões. Esse problema consegui resolver em C#, mais Java não faço ideia se é possivel.
Daria pra fazer isso sim, mais a idéia é usar reflect pra evitar os if…else, e não usar Object pra ver a potência do Java nesses casos.
EDIT:
[code]public static void main(String[] args) {
Object tipo = JOptionPane.showInputDialog("Digite um tipo...");
Class c;
try{
c = Class.forName((String)tipo);
}catch(Exception e){
e.printStackTrace();
}
List<c> l = new List<c>();
}[/code]
Eis a duvida…
Ele não me deixa passar nem objeto, nem classe, nem instância de classe, nem absolutamente nada que consigo usar da classe reflect…
O q vc quer fazer é impossível! Se vc tem uma lista tipada e tipo é determinado apenas em runtime, como vc pretende criar variáveis p/ lidar com essas informações? Tipo Object?? Nesse caso a sua List poderia ser de Objects. Ademais, não tem um meio de vc criar um List de tipo determinado em runtime, Java é staticamente tipado. As informações de tipo devem estar presentes em tempo de compilação. Talvez vc consiga fazer o q vc quer usando uma linguagem de tipagem dinâmica como Python ou Ruby.