反射

反射 - Reflection

程序在运行当中 可以构建任何一个类的对象,可以了解任何一个对象所属的类,可以了解任何一个对象的成员变量和成员方法,可以调用任何一个类的属性和方法,这种动态获得程序信息以及 动态调用对象的功能叫做Java的反射语言机制。反射是动态语言的关键。

类加载器

三种类加载器

BootstrapClassLoarder - 引导启动加载器
嵌在JVM内核的加载器,由C++语言写的,主要加载JAVA_HOME/lin目录下的类库,无法被应用程序直接使用。

ExtesionClassLoarder - 扩展类加载器
主要加载JAVA_HOME/lin/ext 目录下的类库,是引导启动加载器的子类

APP ClassLoarder 应用程序加载器
主要加载Classpath 下的jar和class文件, 是扩展类加载器的子类。

加载器使用双亲委派机制保证资源不被重复加载
在这里插入图片描述
子类接收到类的加载请求时,把这个请求交给父类,父类交给它的父类,如果其中有已存在的或可以加载的则由父类加载,如果都没有则由父类传给它的子类,子类无法加载,在交给它的子类。

类加载器 加载资源 默认是src路径下的文件,如果存在resoure root 目录时,则加载resoure root 目录下的资源

在这里插入图片描述

在这里插入图片描述
要想了解一个类,必须先要获取到该类的字节码文件对象. 在Java中,每一个字节码文件,被夹在到内存后,都存在一个对应的Class类型的对象 // 一个Class文件不会存在两个对象

得到Class文件的三种方式

1.Class a = Class.forName(“类的全名”)

2.Class<类名> a = 类名全名.class;

3.存在类的一个对象 a;
Class<类型> =(Class<类型>) a.getClass;

获得构造方法
在这里插入图片描述

在这里插入图片描述
通过getMethod 获得方法
通过getMethods 获得方法数组
在这里插入图片描述

在这里插入图片描述
常用方法

在这里插入图片描述

内省

内省 是Java基于反射提供的一套应用于javabean的API

bean类:
定义在包中
所有属性私有
所有属性提供get/set方法
实现序列化接口 //Serializable

基于反射 对其进行封装

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值