Java基础-反射

195 阅读2分钟

Java基础-反射

学习的目标

首先需要知道什么是反射:

反射的概念:能够分析类能力的程序称为反射(reflective)。

通俗的说,反射就是将一个类中的成员映射成相对应的Java类型.

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

举个小栗子: 先创建一个Dog类:

image.png 我们正常创建对象是这样的:

image.png 这样创建对象,是没有问题的,但这样做相当于程序写死到代码里,而java的反射机制就是增加程序的灵活性,避免将了这个问题.

那我们如何使用这个反射进行创建对象呢? 首先,我们可以使用类对象的newInstance方法来创建类的实例

举个小栗子: 首先创建类对象,需要调用的是Class.forName方法创建出类的对象,在通过类对象调用newInstance方法就可以创建一个Dog对象了.

image.png

通过观察发现:

image.png

两种方式创建出来的对象那个地址不一致,

image.png

可以知道,通过这个方式创建一个对象是可行的

第二种通过反射创建对象的方式:

image.png

通过类class来获取类对象,在通过类的对象嗲用newInstance方法来创建一个对象.

第三种通过反射创建对象的方式:

image.png

还是先创建一个类对象,获得类对象的的构造方法,在通过构造调用newInstance方法进行创建对象.

这样就知道了,通过反射创建对象有三种方式

  1.通过类名获取 类名.class

  2.通过对象获取 对象名.getClass()

  3.通过全类名获取 Class.forName(全类名)