• 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方法只能反射出  成员),但是只限于类本身的成员

    心得:

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

  • 相关阅读:
    linux 常用命令行
    二叉搜索树(BST)
    pytorch Gradient Clipping
    python 读写文件
    我终于可以毕业啦!
    为什么有可执行文件还需要库文件
    java常识
    *args、*kwargs
    win终端命令
    import_module
  • 原文地址:https://www.cnblogs.com/javacyq/p/13542808.html
Copyright © 2020-2023  润新知