Java e Reflection  XML
Índice dos Fóruns » Artigos e Tutoriais
Autor Mensagem
rnightmare4
HelloWorld
[Avatar]

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";

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
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!

toredobud
Debugger
[Avatar]

Membro desde: 30/03/2008 10:26:40
Mensagens: 52
Localização: São Paulo - SP
Offline

Para pegar o valor do atributo utilize:


seuField.get(suaClasse);

This message was edited 1 time. Last update was at 08/02/2009 17:00:36


Adriano Sousa
[Email] [MSN]
rananfu
JavaChild

Membro desde: 09/01/2007 22:01:00
Mensagens: 138
Offline

ia ler o tutorial mais está dando erro 404 quando tento acessar




Shun é o cara
sauron_fight
Debugger
[Avatar]

Membro desde: 07/11/2007 16:29:51
Mensagens: 56
Offline

Usando flection teria como eu criar uma lista
dos atributos da classe? e depois setar valores a eles?

Evandronexp
Smalltalk
[Avatar]

Membro desde: 26/04/2010 15:55:09
Mensagens: 3
Offline

Teria sim. Pode fazer de diversas formas. Abaixo segue o exemplo da "idéia" de como fazer.

----

This message was edited 1 time. Last update was at 20/07/2011 15:26:59

 
Índice dos Fóruns » Artigos e Tutoriais
Ir para:   
Powered by JForum 2.1.8 © JForum Team