Advertisement
desislava_topuzakova

Reflection Demo

Jul 13th, 2023
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. import java.lang.reflect.*;
  2.  
  3. public class Main {
  4. public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
  5. //достъп до класа
  6. Class personClass = Person.class;
  7.  
  8. //достъп до полетата
  9. Field[] privateFields = personClass.getDeclaredFields();
  10. Field[] publicFields = personClass.getFields();
  11.  
  12. for (Field field : privateFields) {
  13. System.out.println(field.getName()); //име на полето
  14. System.out.println(Modifier.toString(field.getModifiers())); //модификаторите за достъп: private final
  15. System.out.println(Modifier.isPublic(field.getModifiers())); //проверка дали полето е public
  16. System.out.println(Modifier.isPrivate(field.getModifiers())); //проверка дали полето е private
  17. System.out.println(Modifier.isProtected(field.getModifiers())); //проверка дали полето е protected
  18. System.out.println(Modifier.isFinal(field.getModifiers())); //проверка дали полето е final
  19. }
  20.  
  21. //достъп до конструктор
  22. Constructor<Person> privateConstructor = personClass.getDeclaredConstructor(String.class);
  23. privateConstructor.setAccessible(true);
  24. Constructor<Person> publicConstructor = personClass.getConstructor(String.class, int.class);
  25.  
  26. //създаване на обекти от класа
  27. Person p1 = privateConstructor.newInstance("Pesho");
  28. Person p2 = publicConstructor.newInstance("Ivan", 23);
  29.  
  30. //използване на създадените обекти
  31. System.out.println(p2.getAge());
  32. System.out.println(p1.getName());
  33.  
  34. //достъп до методи
  35. Method methodRun = personClass.getDeclaredMethod("run");
  36. methodRun.setAccessible(true);
  37. methodRun.invoke(p2);
  38. System.out.println(Modifier.toString(methodRun.getModifiers()));
  39.  
  40. Method methodGetAge = personClass.getMethod("getAge");
  41. methodGetAge.invoke(p1);
  42. System.out.println(Modifier.isPublic(methodGetAge.getModifiers())); //проверка дали метода е public
  43.  
  44. }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement