fork download
  1. import java.lang.reflect.Field;
  2.  
  3. class TesteReflection {
  4. public static Field acharField(Class<?> onde, String nome) throws NoSuchFieldException {
  5. if (onde == null) throw new NullPointerException();
  6. if (nome == null) throw new NullPointerException();
  7. NoSuchFieldException excecao = null;
  8. for (Class<?> c = onde; c != null; c = c.getSuperclass()) {
  9. try {
  10. return c.getDeclaredField(nome);
  11. } catch (NoSuchFieldException e) {
  12. if (excecao == null) excecao = e;
  13. }
  14. }
  15. throw excecao;
  16. }
  17.  
  18. public static class A1 {
  19. private String teste;
  20. }
  21.  
  22. public static class A2 extends A1 {}
  23. public static class A3 extends A2 {}
  24.  
  25. public static void main(String[] args) throws NoSuchFieldException {
  26. Field f = acharField(A3.class, "teste");
  27. System.out.println("Achou o Field " + f.getName() + ".");
  28. try {
  29. acharField(A3.class, "naoTem");
  30. throw new AssertionError("Ops, não deveria chear aqui.");
  31. } catch (NoSuchFieldException e) {
  32. System.out.println("Não achou o Field naoTem.");
  33. }
  34. System.out.println("Teste concluído com sucesso.");
  35. }
  36. }
Success #stdin #stdout 0.1s 27776KB
stdin
Standard input is empty
stdout
Achou o Field teste.
Não achou o Field naoTem.
Teste concluído com sucesso.