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”;
public ReflectionTest () {
init();
}
protected void init() {
try {
Class cls = Class.forName( getClass().getName().toString() );
Field field = cls.getField( "testeStr" );
String str = new String();
///////////////////////////////
// olha o THIS aqui
field.set( this, "String modificada");
System.out.println( testeStr );
}
catch (Throwable e) {
System.err.println(e);
}
}
public static void main(String args[]) {
ReflectionTest rt = new ReflectionTest();
}
}
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
[b]field.set(o, rs.getObject(coluna.nome())); [/b]
System.out.println(o.toString());
}
}
[b]array.add(o); [/b]
} 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!