1.本章的主要内容

  1. java反射机制概述
  2. 理解Class类并获取Class实例
  3. 类的加载与ClassLoader的理解
  4. 创建运行时类
  5. 获取运行时类的完整结构
  6. 调用运行时类的指定结构
  7. 反射的应用:动态代理

    2.关于反射的理解

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何
类的内部信息,并能直接操作任意对象的内部属性及方法。

框架 = 反射 + 注解 + 设计模式。

3.体会反射机制的“动态性”

  1. //体会反射的动态性
  2. @Test
  3. public void test2(){
  4. for(int i = 0;i < 100;i++){
  5. int num = new Random().nextInt(3);//0,1,2
  6. String classPath = "";
  7. switch(num){
  8. case 0:
  9. classPath = "java.util.Date";
  10. break;
  11. case 1:
  12. classPath = "java.lang.Object";
  13. break;
  14. case 2:
  15. classPath = "com.atguigu.java.Person";
  16. break;
  17. }
  18. try {
  19. Object obj = getInstance(classPath);
  20. System.out.println(obj);
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }
  26. /*
  27. 创建一个指定类的对象。
  28. classPath:指定类的全类名
  29. */
  30. public Object getInstance(String classPath) throws Exception {
  31. Class clazz = Class.forName(classPath);
  32. return clazz.newInstance();
  33. }

4.反射机制能提供的功能

image.png

5.相关API

java.lang.Class:反射的源头
java.lang.reflect.Method
java.lang.reflect.Field
java.lang.reflect.Constructor
….