Olá Pessoal tenho a classe abaixo e preciso passá-la como parâmetro para um método.
Dentro deste método preciso criar uma lista desta classe e retorná-la.
Tentei fazer passando a classe como object mas na hora que tento instanciar para fazer o list aí não consigo.
public class Ven_notaentrada {
private Integer id_entrada;
private Integer id_usuarioincluiu;
public Integer getId_entrada() {
return id_entrada;
}
public Integer getId_usuarioincluiu() {
return id_usuarioincluiu;
}
public void setId_usuarioincluiu(Integer idUsuarioincluiu) {
id_usuarioincluiu = idUsuarioincluiu;
}
public void setId_entrada(Integer idEntrada) {
id_entrada = idEntrada;
}
}
public List<Object> getById( Object OClass, String[] parameters ){
int i = 0;
List<Object> ocs = new List<Object>();
while(i<5){
OClass oc = new OClass(); // aqui o compilador acusa erro
oc.setId_usuarioincluiu(4);
oc.setId_entrada(5);
ocs.add(oc);
}
}
Pensei em colocar:
Object oc = new Object();
ao invés de:
OClass oc = new OClass();
mas daí não seria uma instância da classe passada por parâmetro
Nas linhas abaixo, acredito que precisarei do reflection, mas para este funcionar, preciso q a instância seja do tipo da classe ven_notaentrada.
Vejam que preciso q seja genérico, pois irei utilizar outras classes com o mesmo método
Se você pensa em passar mais classes que tenham os mesmos atributos, então faça uma classe pai conter todos os atributos em comum, o método em questão passará a receber como parâmetro, a supreclasse.
Olá Thiago, na realidade existirão várias outras classes com diversos campos diferentes.
O que estou fazendo é um métod getById que irá realizar um select no banco de dados e retornar todos os campos
da tabela, minha idéia é que ele seja genérico para que eu possa utilizar com qualquer classe.
Com o reflection irei realizar o preenchimento dos campos set de cada classe.
Veja que a classe original era esta abaixo, mas quero fazer algo genérico como já fiz para os get´s contudo no caso do select estou com este problema.
[code]public List getById( Object OClass, String[] parameters ){
int i = 0;
List<Object> ocs = new List<Object>();
while(i<5){
OClass oc = new OClass(); // aqui o compilador acusa erro
oc.setId_usuarioincluiu(4);
oc.setId_entrada(5);
ocs.add(oc);
}
} [/code]
No método acima o trecho
OClass oc = new OClass(); // aqui o compilador acusa erro
Está errado, quando você usa parâmetro o objeto deve vir instanciado, o compilador está procurando um objeto chamado OClass() e o mesmo não existe.[/quote]
Concordo, justamente, quero encontrar qual a forma correta de resolver este problema.
Dê uma pesquisada sobre DAO Genérico (Generic DAO)! Eu acho que vai ser bem mais produtivo para você do que tentar fazer um mega ultra power método populator tabajara!
Blz, thiago eu vou olhar sim. Na realidade ja consegui fazer o insert/update/delete. O Select seria apenas um plus não é tão necessário levando em conta
que cada select é um select diferente. Vou verificar!
[quote=Tiago Borghi]O problema é que você está passando um Object como parâmetro. Se quiser mesmo passar o object ele vai ter que estar instanciado já.
Agora, se você passar a Class como parâmetro poderia fazer dessa maneira:
[code]public List getById( Class classe , String[] parameters ){
Na chamada do método passa como parâmetro OClasse.class
[/quote]
Olá Thiago!
Vc tem toda a razão, nã há necessidade de passar o objeto instanciado, pois o que quero é uma lista do tipo da minha classe, estava passando um objeto erroneamente.
Mas há um problema aí.
Não posso referenciar o nome da classe Ven_notaentrada, pois a idéia é que este processo seja genérico para qualquer classe!