什么是反射
首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,比如编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行。
- JAVA反射机制是在运行状态中
- 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息
- 能够知道这个类的所有属性和方法(即使是私有的)
- 可以调用它的任意方法和属性,甚至改变属性
- 这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制
java如何实现反射
众所周知Java有个Object 类,是所有Java 类的继承根源,其内声明了数个应该在所有Java 类中被改写的方法:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Class 对象。
这个Class 类十分特殊,当一个类被加载JVM 便自动产生一个Class 对象。
的到class有三种方式:
1 | //1、通过对象调用 getClass() 方法来获取,通常应用在:比如你传过来一个 Object |
Class类提供了大量的实例方法来获取该Class对象所对应的详细信息,我们只是做简单的介绍,详细请参考JDK文档,这边提供一个在线的中文文档给大家如下:
这边列了下Class类其中的部分方法,
1 | 获取公共构造器 getConstructors() |
反射的用途
注解的使用:java中注解功能的实现就是通过反射机制
编写基础框架:反射机制是很多java框架的基础,如spring的ioc容器的实现
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
