Alterar valor de prorpriedade em tempo de execução

2 respostas
marlonmca

Boa tarde pessoal,

eu tenho que pegar um objeto e setar null no id da entidade.
Como eu faço isso por meio de um método genérico eu uso o object para receber os objetos da chamada. Mas o problema é que eu não sei alterar o id do objeto.
Eu até consigo achar o campo, mas não consigo alterar.

public static Object cloneObj(Object obj){
		try {
			String nomeCompleto = obj.getClass().getName();
			String nomeClasse = String.copyValueOf(nomeCompleto.toCharArray(), nomeCompleto.indexOf("entity") + 7, nomeCompleto.length() - nomeCompleto.indexOf("entity") - 7);

			obj.getClass().getField("id" + nomeClasse).setInt(new Integer(0), (Integer) null);
			
		}catch (Throwable e) {
			e.printStackTrace();
		}
		
		return obj;
	}

toda vez que vai dar o setInt da a exceção java.lang.NoSuchFieldException.

Alguém sabe como eu posso alterar o valor do id do objeto do tipo object?

2 Respostas

wagnerfrancisco

A exceção NoSuchFieldException diz que o campo não foi encontrado na classe. Ele é privado? Se for privado, utilize getDeclaredField ao invés de getField.

marlonmca

opa wagner

vlw pela ajuda

esse jeito que vc me mostrou deu outro erro, ai eu fui pesquisar sobre esse novo erro e descobri uma outra forma de fazer que funcionou:

Statement stmt = new Statement(obj, nomeMetodo, new Object[] {new Integer(0)});  
	stmt.execute();

vlw pela ajuda. :slight_smile:

Criado 14 de maio de 2011
Ultima resposta 14 de mai. de 2011
Respostas 2
Participantes 2