Java语言的反射机制

一、Java语言的反射机制:

 

  1.Java的反射(reflection)机制是指在程序的运行状态中,

    • 可以构造任意一个类的对象
    • 可以了解任意一个对象所属的类
    • 可以了解任意一个类的成员变量和方法
    • 可以调用任意一个对象的属性和方法

  这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。(反射被视为动态语言的关键)

 

  2.Java反射机制主要提供了以下功能:

    • 在运行时判断任意一个对象所属的类;
    • 在运行时构造任意一个类的对象;
    • 在运行时判断任意一个类所具有的成员变量和方法;
    • 在运行时调用任意一个对象的方法;
    • 生成动态代理。

 

 

二、获取Class对象:

 

  1.对于每一个类在加载时都会有唯一的Class对象,Class对象中包含了所有需要动态获取的类的信息,所有Class类是Reflection API中的核心类

  2.获取Class对象的四种方法:

    • obj.getClass()
    • class属性
    • Class.forName()
    • ClassLoader

 

例:

复制代码
 1 public class Test1 {
 2     public static void main(String[] args) throws ClassNotFoundException {
 3         //得到Class类对象的四种方法
 4         //1.
 5         Object obj = new String();
 6         Class clz1 = obj.getClass();
 7 
 8         //2.
 9         Class clz2 = String.class;
10 
11         //3.
12         try {
13             Class clz3 = Class.forName("java.lang.String");
14         } catch (ClassNotFoundException e) {
15             e.printStackTrace();
16         }
17 
18         //4.
19         ClassLoader cl = ClassLoader.getSystemClassLoader();
20         Class clz4 = cl.loadClass("java.util.ArrayList");
21     }
22 }
复制代码

 

 

 

三、Reflection(API):

 

  在JDK中,主要由以下类来实现Java反射机制,这些类都位于java. lang reflect包中:

  •  class:类:代表个类
  •  Field类:代表类的成员变量(成员变量也称为类的属性)
  •  Method类:代表类的方法
  •  Modifier类:代表修饰符
  •   Constructor类:代表类的构造方法 
  •  Araay类:提供了动态创建数组,以及访问数组的元素的静态方法 


注意:

  在 Class对象的方法中,所有 getXXX方法只能反射出  成员),但是只限于类本身的成员

 

 

心得:

  好运不会总是降临在你身上,你的努力是你唯一能站稳脚跟的依靠。

posted @ 2020-08-21 18:39  堇墨傾城  阅读(229)  评论(0编辑  收藏  举报