Java中什么是反射
我们可以看到,之前我们所运行的程序都是在编译时就已经链接了所有所需的类,也就是说程序运行的时候,项目所需要的类都已经加载好了,而反射则不是这样,它允许程序在运行的时候再加载、探知、使用那些在编译时未知的类,它是逆着来的。大概也可以这样理解,就是在程序加载运行的时候,同时再加载、使用一些未知的类,这两个操作是同时运行的。加载这些未知的类时,也可以通过一些方法得到这些类的相关信息
类比一个现实生活中的例子
1,姐妹,你见我的修眉刀没?
2,我昨天放粉饼的时候,好像在化妆桌的小抽屉里看到了,你去找找看看吧
3,好的
然后你从“粉饼”推出了“化妆桌的小抽屉”,然后找到了“修眉刀”
其实我们的反射也是这样的,在不知道类信息的时候,从类或者对象中推导出Class类型,然后再从Class中获取类的一些相关信息
这样我们也就知道了,要想拿到类的相关信息,第一步就需要先拿到Class类。
先说说什么是Class类
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。也就是说Class类是以上这些数据类型的类,也可以理解为是他们的“爷爷”。
假如现在有一个Person类,Person类的实例对象是person,现在要通过Person类或者实例person拿到Class,然后再通过Class获取Person类的一些相关信息,比如方法名,修饰符、属性、方法、构造函数等等
- 点赞
- 收藏
- 关注作者
评论(0)