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:
- Estou usando isso em programação para Android;
- 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.