反射

来源:互联网 发布:单片机led流水灯程序 编辑:程序博客网 时间:2024/05/02 00:51

反射是java中的一个亮点,也是一项很强大的技术。

反射可以使我们能够通过类的全名来获取类。

Class class=Class.forName(org.software.Test.src.xxx.class);

Object object=.class.newInstance();

通过反射可以获取类中的属性和方法,即使它是私有的,这种能够看透class的能力也叫作"内省"。

反射这么强大,那么反射一般的使用场景是什么呢?

在有些情况下,我呢吧所使用的类在运行时才能够确定,这是多态的一种体现,在框架中也会涉及到,这样的类我们在编译器不能够使用,只能够通过反射的形式,这是反射使用的比较多的场景。

还有一种场景是编译时我们对于类的内部信息不可知,如ORM框架。

当我们编写完一个java类后,.java就会变为.class文件,在这个文件中包含了这个类的所有原始信息,在运行时,这个文件被classLoader加载到虚拟机中,当这个类被加载之后,java内存中会产生class对象。

我们通常new一个类的无参构造方法来new一个对象,其实就是通过哲学Class来创建,这是这个过程对我们来说是透明的。

如果在调用Class.forName()方法时,如果没有找到对应的类,那么将会抛出ClassNotFoundException。

反射作为Java语言的重要特性,在开发中有着极为重要的作用。很多开发框架都是基于反射来实现对目标对象的操作,而反射配合注解更是设计开发框架的主流选择,因此深入了解反射的作用以及使用对于日后开发和学习必定大有益处。











Java反射是可以让我们在运行时获取类的函数、字段、父类、接口等Class内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法或字段是私有的的也可以通过反射的形式调用,这种“看透class”的能力被称为内省,这种能力在框架开发中尤为重要。 

0 0
原创粉丝点击