Java基础-反射
学习的目标
首先需要知道什么是反射:
反射的概念:能够分析类能力的程序称为反射(reflective)。
通俗的说,反射就是将一个类中的成员映射成相对应的Java类型.
Java的反射机制是在编译期并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。
举个小栗子: 先创建一个Dog类:
我们正常创建对象是这样的:
这样创建对象,是没有问题的,但这样做相当于程序写死到代码里,而java的反射机制就是增加程序的灵活性,避免将了这个问题.
那我们如何使用这个反射进行创建对象呢? 首先,我们可以使用类对象的newInstance方法来创建类的实例
举个小栗子: 首先创建类对象,需要调用的是Class.forName方法创建出类的对象,在通过类对象调用newInstance方法就可以创建一个Dog对象了.
通过观察发现:
两种方式创建出来的对象那个地址不一致,
可以知道,通过这个方式创建一个对象是可行的
第二种通过反射创建对象的方式:
通过类class来获取类对象,在通过类的对象嗲用newInstance方法来创建一个对象.
第三种通过反射创建对象的方式:
还是先创建一个类对象,获得类对象的的构造方法,在通过构造调用newInstance方法进行创建对象.
这样就知道了,通过反射创建对象有三种方式
1.通过类名获取 类名.class
2.通过对象获取 对象名.getClass()
3.通过全类名获取 Class.forName(全类名)