标签:编译 基本原理 反射机制 访问 method field 基本 new etc
反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行的时候才动态加载类,并且对于任意一个类,都能够知道这个类的所有属性和方法,调用方法/访问属性,不需要提前在编译期知道运行的对象是谁,他允许运行中的Java程序获取类的信息,并且可以操作类或对象内部属性。程序中对象的类型一般都是在编译期就确定下来的,而当我们的程序在运行时,可能需要动态的加载一些类,这些类因为之前用不到,所以没有加载到jvm,这时,使用Java反射机制可以在运行期动态的创建对象并调用其属性,它是在运行时根据需要才加载。
在我们日常的编程中不知不觉已经习惯“使用”反射机制——在使用IDEA进行开发的时候,在对象名后加一个“.”就能够自动的获得该对象的所有属性和方法,这种功能可以说大大的遍历我们的开发过程。这种功能的实现依靠的就是反射机制。
利用java的反射机制可以很灵活的对加载到Java虚拟机中的类信息进行检测
首先介绍和反射相关的类:
(1)Object-->getClass
(2)任何数据类型(包括基本的数据类型)都有一个“静态”的class属性
(3)通过class类的静态方法:forName(String className),应用范围较广
public native boolean isInstance(Object obj);
Class对象的newInstance()方法——动态代理中实现动态生成代理类的关键
String.class.newInstance()
通过getConstructor()或getDeclareConstructor()方法获得构造器(Constructor)对象并调用其的newInstance()方法
String.class.getConstructor(String.class).newInstance("Test");
参考博文:
https://blog.csdn.net/haluoluo211/article/details/49516689
https://blog.csdn.net/a745233700/article/details/82893076
标签:编译 基本原理 反射机制 访问 method field 基本 new etc
原文地址:https://www.cnblogs.com/infinity-zhang/p/13393797.html