Membro desde: 24/05/2007 13:24:15
Mensagens: 14
Offline
Paulo Silveira... fiz exatamente o que vc explicou neste trecho de codigo:
-------------------------------------------------------------------------------------
O primeiro argumento que o set recebe eh o objeto que voce quer mudar algo argumento
Tipo
campoQueEuQuero.set(instancia, novoValorDoCampo);
Entao, soh mudei uma linha do seu codigo:
Code:
import java.lang.reflect.*;
public class ReflectionTest {
public String testeStr = "Uma string";
fiz isso pra setar meu objeto... so que agora estou com uma duvida seguinte: veja meu codigo...
// carregando o collection
if(rs.next()){
array = new ArrayList<Object>();
//Object cls = null;
do{
// Percorre os campos com os atributos de Pessoa.
for (Field field : fields) {
field.setAccessible(true);
// verifica se é uma Annotation Coluna
if (field.isAnnotationPresent(Coluna.class)) {
// 'Acessando' a anotação
Coluna coluna =
field.getAnnotation(Coluna.class);
// invocando o método
field.set(o, rs.getObject(coluna.nome())); System.out.println(o.toString());
}
}
array.add(o); } while(rs.next());
}
no momento que adiciono o array com o objeto "o", ele muda o valor do objeto inserido anteriormente... ou seja, se o "rs" possuir 10 linhas, vou ter um array com 10 objetos iguais com os valores do ultimo objeto inserido... eu entendo que é por causa da referencia deste objeto, pois a referencia é sempre a mesma com valores atualizados pra cada linha do
"rs" e por isso ele sempre muda os valores... mas teria outro jeito de fazer isso para manter meus objetos de acordo com cada linha do "rs"??? ja consegui fazendo assim: array.add(o.toString()); mas ai ele popula o array com strings e eu precisava que esse array fosse populado com objetos... pois ele é o retorno do meu metodo e onde vou usa-lo preciso dos objetos!