对于java反射机制你有多了解呢?下面的话要给大家介绍的就是java反射机制,主要介绍的就是概念功能以及优缺点等内容的介绍,一起来了解一下吧。
Java反射机制是Java语言的一个重要特性,首先的话,我们先要来了解一下2个概念,一个是编译期,一个是运行期。
编译期-指把源码交给编译器编译成计算机可以执行的文件的过程。
在Java当中,也就是把Java代码编成class文件的过程,编译期只是做了一些翻译功能,并没有把代码放在内存中运行起来,而只是把代码当成文本进行操作,例如,检查错误。
运行期-是把编译之后的文件交给计算机执行,直到程序运行结束,运行期也就是将在磁盘中的代码放到内存中执行起来。
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息,在Java中,只要给定类的名字,就能够通过反射机制来获得类的所有信息。
Java反射机制在服务器程序和中间件程序中得到了广泛运用,在服务器端,往往需要根据客户的请求,动态调用某一个对象的特定方法。除此之外,在ORM中间件的实现中,运用Java反射机制能够读取任意一个javaBean的所有属性,或者给这些属性赋值。
Java反射机制主要提供了下面的功能。
这些功能都位于包。
想要知道一个类的属性和方法,就一定先要获取到这个类的字节码文件对象,获取类的信息的时候,使用的就是Class类当中的方法,所以就要先获取到每一个字节码文件(.class)对应的 Class 类型的对象。
我们都知道,所有Java类基本上都继承了Object类,在Object类当中定义了一个getClass()方法,这个方法返回同一个类型为Class的对象。
例:下面的代码:
Class labelCls = label1.getClass(); // label1为 JLabel 类的对象
利用Class类的对象labelCls能够访问labelCls对象的描述信息、JLabel类的信息以及基类Object的信息。
下面是通过反射能够访问的信息:
如上所示:
在调用getFields()以及getMethods()方法的时候,将会依次获取权限为public的字段和变量,之后,将包含从超类中继承到的成员变量和方法,通过getDeclareFields()以及getDeclareMethod()只是获取在本类中定义的成员变量和方法。
Java反射机制的优缺点:
优点:
缺点:
Java反射机制在一般的Java应用开发当中使用的比较少,即使是Java EE阶段也用的比较少。
以上的内容你都清楚了吗?更多关于Java反射机制的java入门知识,请继续奇Q工具网来进行了解吧。
推荐阅读: