Ola pessoal estou com uma duvida basica, pode parecer um absurdo
para voces, mas estou iniciando na linguagem java.
Eu vi q podemos fazer um Dao Generico e fiz um, agora eu
queria saber se e possivl fazer um controle generico. asim:
no meu controle eu necessito instanciar uma classe Livros por ex
public class ControleLivros {
private Livros livro = new Livros();
...codes
}
gostaria de saber se e possivel e como fazer por ex:
public class Controle<objeto> {
private <objeto> obj = new <objeto>();
...codes
}
ja pude ver q isso deu erro, ehehehe, mas e possivel?
Qual o tipo do seu atributo? Object
o que adianta passar algo usando a tecnologia Generics se depois ele vai virar um Object?
Veja o que o Thingol escreveu.
o que muda é, que ao invés de criar uma nova instancia usando new, você busca esta instancia usando o método getInstance() que está presente na Classe: Class que é o seu argumento. Qual parâmetro passar para o método? SuaClasse.class
É porque quando vc faz uma classe genérica, vc tem que passar qual atributo ela vai usar em tempo de execução, tendo em vista que T não existe no Java…
Exemplo…
[code]public class MeuGenerico {
private T objGenerico;
public MeuGenerico(Class klass){
this.objGenerico = klass.newInstance();
}
public static void main(String args[]){
MeuGenerico objString = new MeuGenerico();
}[/code]}
public Teste(){}
public static void main(String[] args){
Controle<Usuarios> usu = new Controle(Usuarios.class);
}
}[/code]
testando com seu codigo ele da erro entao mudei um pouco
[code]package meupacote.controle;
public class Teste {
private T objGenerico;
public Teste(Class<T> klass){
this.objGenerico = klass.newInstance();
}
public static void main(String args[]){
Teste<String> objString = new Teste(String.class);
}
}[/code]
mas o erro persiste no newInstante…
[code]package meupacote.controle;
public class Teste {
private T objGenerico;
public Teste(Class<T> klass){
this.objGenerico = klass.newInstance();
}
public static void main(String args[]){
//colokei um parametro
Teste<String> objString = new Teste<string>(String.class);
}