反射机制,加载器

        Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

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

在运行时判断任意一个对象所属的类;

在运行时构造任意一个类的对象;

在运行时判断任意一个类所具有的成员变量和方法;

在运行时调用任意一个对象的方法;

生成动态代理。

实现反射机制的类

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

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

意义

首先,反射机制极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力。

其次,通过反射机制可以让程序创建和控制任何类的对象,无需提前硬编码目标类。

再次,使用反射机制能够在运行时构造一个类的对象、判断一个类所具有的成员变量和方法、调用一个对象的方法。

最后,反射机制是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中。

一,什么是类加载器
类加载器器:负责将.class文件(存储的物理文件)加载到内存中

类加载时机:

        1,创建类的实例(对象)

        2,调用类的方法

        3,访问类或者接口的类变量,或者为该类变量赋值

        4,使用反射方式来强制创建某个类或接口对应的java.lang.class对象

        5,初始化某个类的之类

        6,直接使用java.exe命令来运行某个主类

用到就加载,不用不加载

二,类加载器的过程
1,加载:通过报名+类名,获取这个类,准备用流进行传输,将这个类加载到内存中,加载完毕创建一个class对象

2,验证:文件中的信息是否符合虚拟机规范,有没有安全隐患

     准备:初始化静态变量

     解析:本类中如果用到其他类,此时就需要找到对应的类

3,初始化:静态变量赋值以及初始化其他资源

 

三,类加载器的分类
启动类加载器(BootstrapClassLoader):虚拟机内置的类加载器

平台了加载器(PlatformCladdLoader):负责加载JDK中一些特殊的模块

系统类加载器(SystemClassLoader):负责加载用户类路径上所指定的类库

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值