前言:
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))
首先学习反射之前,我要提出疑问:
反射是个什么东西?它是用来做什么的?平时的应用场景有哪些?为啥要用它?它有什么优缺点?它的工作原理是什么?我怎么使用它?
注意:光理论是不够的,在此送大家十套2020最新Java架构实战教程+大厂面试题库,转发本文,关注我后在后台私信【666】即可免费获取!
Q1:什么是反射?
A:反射就是把java类中的各种成分映射成一个个的Java对象。
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)
如下图是类的正常加载过程:反射的原理在与class对象。
熟悉一下加载的时候:Class对象的由来是将class文件读入内存,并为之创建一个Class对象。
其中这个Class对象很特殊,我们先了解一下这个Class类。
查看Class类在java中的api详解(1.7的API):
如何阅读java中的api详见java基础之——String字符串处理
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。也就是jvm中有N多的实例每个类都有该Class对象。(包括基本数据类型)
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。也就是这不需要我们自己去处理创建,JVM已经帮我们创建好了。
没有公共的构造方法,方法共有64个太多了。