Percorrer FIELDS de um Objeto em JAVA

Salve galera…
Eu tenho um método em C# onde consigo pegar um objeto e varrer seus campos(Fields) e pegar ou setar seus respectivos valores.
Só que estou tentando fazer algo parecido em java e não esta dando certo, vejam a seguinte classe:

public class usuario_ENT {

	private int    _id;
	private String _nome;
	
	public usuario_ENT() {		
		super();
	}
	
	public void setId(int pnId) {
		this._id = pnId;
	}
	
	public int getId() {
		return this._id;
	}
	
	public void setNome(String psNome) {
		this._nome = psNome;
	}
	
	public String getNome() {
		return this._nome;
	}
}

Consigo percorrer todos os FIELDS e exibir seus respectivos nomes normalmente assim:

public void fTeste(usuario_ENT poEnt)
{
	Class theClass = poEnt.getClass();
	Field fields[] = theClass.getDeclaredFields();	    
	
	for (int j = 0, m = fields.length; j < m; j++) 
	{		
		System.out.println("Field name: " + fields[j].getName());
	}
}

Só que eu queria ler o valor de um determinado FIELD, tentei assim:

public void fTeste(usuario_ENT poEnt)
{
	Class theClass = poEnt.getClass();
	Field fields[] = theClass.getDeclaredFields();	    
	
	for (int j = 0, m = fields.length; j < m; j++) 
	{		
		System.out.println("Field name: " + fields[j].getName());
	}
	
	try
	{	        
		//Field field = theClass.getField("_id");
		//Field field = theClass.getField("getId");
		//Field field = theClass.getDeclaredField("_id");
		Field field = theClass.getDeclaredField("getId");
		
		Object value = field.get(poEnt);        	
		System.out.println("Field value: " + value);	        
	}	  
	catch (NoSuchFieldException e) 
	{	        	
		e.printStackTrace();	        	
	} 
	catch (IllegalAccessException e) 
	{	        	
		e.printStackTrace();	        	
	}
}

Não funcionou, a idéia era ter o TRY dentro do FOR para ler o valor de cada FIELD, mas so pra explicar melhor coloquei fora testando com o field ID.
Vejam que tem 3 linhas comentadas, isso porque tentei de 4 formas e não consegui, a que chegou mais perto de funcionar foi:
“Field field = theClass.getDeclaredField(”_id")"
Mas ai ele da erro de ACESSO NÃO PERMITIDO, deve ser por que o field é private, das outras formas da tudo como field não encontrado.

Alguém pode me dar uma luz?

Obs:

  1. Estou usando isso em programação para Android;
  2. Não entrei no mérito de field (_id) e método (getId), mas eu sei as diferenças, so que no C# isso pra mim é transparente, eu tenho uma classe quase que da mesma forma e consigo ler com esse raciocinio o valor do “método” público.

Talvez assim?

field.get(theClass); 

//Daniel

[code]Field[] campos = objeto.getClass().getDeclaredFields();
for (int i = 0; i < campos.length; i++) {

// Tipo 
// Exemplo: class java.math.BigDecimal
System.out.println(campos[i].getType());

m[i].setAccessible(true);
// Valor
System.out.println(campos[i].get(objeto));

// Setar valor
campos[i].set(objeto, new BigDecimal("0"));

}[/code]

Não funcionou…
Fiz assim:

Field field = theClass.getDeclaredField("_id");
Object value = field.get(theClass);              
System.out.println("Field value: " + value);

e ele da:

02-09 13:52:52.624: W/System.err(1484): java.lang.IllegalAccessException: access to field not allowed

E vou conseguir ler esse FIELD mesmo ele sendo PRIVADO?

Opa Cesar Pizolato, deu certinho…

Muito Obrigado!

Aproveitando o tópico, em C# posso fazer algo desse tipo:

public class usuario_ENT {

    [_EntAtr("_id", "Id", "int", 22, false, Pk = true)]
	private int    _id;
}

ou seja, tenho uma classe _EntAtr, que são atributos que posso usar nos campos de um objeto e depois recuperar quando ler esse dado campo dessa classe.
Tem como fazer algo semelhante em JAVA? Se tem, como é e como posso ler esses atributos depois?

Na realidade, só precisava marca se determinado campo é obrigatório e se é chave primária.
Obrigado.

[quote=gimenezbr]
Na realidade, só precisava marca se determinado campo é obrigatório e se é chave primária.
Obrigado.[/quote]

isso está cheirando a Annotations - dá uma olhada no tutorial: Annotations

Exatamente isso, obrigado pela “Luz”.

Esse artigo é simples e objetivo, para que precisar fica a deixa:

Abraços.