JAVA高级基础(53)---反射概述

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84975155

什么是Java的反射?

大家都知道,要让Java程序能够运行,那么就得让Java‘类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行的。现在我们运行的所有的程序都是在编译期的时候就已经知道了你所需要的那个类,并且已经被加载了。

Java反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期不知道的类。这样的特点就是反射。

Java反射有什么作用?

在实际开发中:

当在进行合作开发(团队开发),
        A程序员  完成 AA类    A程序的AA类中要使用到BB类。
        B程序员  完成 BB类    此时B程序员只是对BB类进行了设计和规划。  BB类的结构是清楚的。
        A程序员可以通过反射机制来在运行阶段在去使用BB类。

Java开发的三大框架:SSM(Springmvc    Spring   Mybaits)
                                    SSH(Struts2   Spring  Hibernate)

在开发任何一个项目的时候,都可以来使用三大框架。核心技术:反射

反射是Java被当作一门动态语言的基础

反射是通过类的结构(类名、属性、方法(构造方法))可以去创建类的对象,获取类的方法、属性、调用方法并执行方法

反射概述

Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行器借助于Reflection API取得任何累的内部信息,获得类的完整构造方法,并实例化出对象,给对象属性设定值或者调用对象的方法。

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

  • 在运行时构造任意一个类的对象
  • 在运行时获取任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的方法(属性)
  • 生成动态代理

类的加载

当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化。

  1. 加载:就是指将class文件读入内存,并为之创建一个class对象。任何类被使用时系统都会建立一个class对象
  2. 连接:验证是否有正确的内部结构,并和其他类协调一致;准备负责为类的静态成员分配内存,并设置默认初始化值;解析将类的二进制数据中的符号引用替换为直接引用。
  3. 初始化

类的初始化时机

  • 创建类的实例
  • 访问类的静态变量,或者为静态变量赋值
  • 调用类的静态方法
  • 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
  • 初始化某个类的子类
  • 直接使用java.exe命令来运行某个主类

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84975155