Oi, pessoal
Como faço para acessar o valor de um atributo privado usando Reflection ?
Ou seja, como faço para invocar o método getXXX de um atributo privado usando Reflection ?
Abraço,
Ruben Lins
Oi, pessoal
Como faço para acessar o valor de um atributo privado usando Reflection ?
Ou seja, como faço para invocar o método getXXX de um atributo privado usando Reflection ?
Abraço,
Ruben Lins
public class Teste {
private String valor = "valor";
public static void main(String[] args) {
try {
Teste teste = new Teste();
Field field = teste.getClass().getDeclaredField("valor");
field.setAccessible(true);
System.out.println(field.get(teste));
} catch (Exception e){
System.out.println("Deu merda: " + e.getMessage());
}
}
}
Commons beanutils http://commons.apache.org/beanutils/
PropertyUtils.getSimpleProperty(bean, "XXX");
Ele quer chamar o getter; ele não quer o valor do campo. Neste caso é mais fácil (não é preciso usar “setAccessible”), mas por favor confira porque estou escrevendo sem conferir:
public class Teste {
private String valor;
public String getValor () { return valor; }
public static void main(String[] args) {
try {
Teste teste = new Teste();
Method method = teste.getClass().getMethod ("getValor");
String valor = (String) method.invoke (teste, new Object[] {});
}catch (Exception e){
System.out.println("Deu merda: " + e.getMessage());
}
}
}
public class Teste {
private String valor = "valor";
public String getValor(){
System.out.println("invocou!");
return this.valor;
}
public static void main(String[] args) {
try {
Teste teste = new Teste();
Method method = teste.getClass().getDeclaredMethod("getValor", null);
System.out.println(method.invoke(teste, null));
} catch (Exception e){
System.out.println("Deu merda: " + e.getMessage());
}
}
}
Muito obrigado, pessoal.
Resolvi o meu problema. Optei pela solução dado pelo Rodrigo.
Mas obrigado a todos.
Abraços,
Ruben Lins