Java的反射机制(1)_非常简单的示例(笔记)2019/8/2

Java反射机制(Reflection):

     是什么:反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并且能够操作任意对象的内部属性及其方法。很多Java的框架都是利用反射机制实现的。

    能做什么:1  在运行期判断任意一个对象所属的类

                         2 在运行期构造任意一个类的对象

                        3 在运行期判断任意一个类具有的成员变量和方法

                        4 在运行期调用任意一个对象的成员变量和方法

                        5 在运行期生成动态代理

相关API:

    java.long.Class:代表一个类,

    java.lang.reflect.Method:代表类的方法

    java.lang.reflect.Field:代表类的成员变量

    java.lang.reflect.Constructor:代表类的构造方法

假设有这么一个学生类:

不使用反射生成类的实例并且调用方发法


输出

你可能会纠结printf()方法是什么鬼:

如果使用反射机制:



设置成功

以上设置的是 public 的成员变量,对于private 成员变量不适用

那么对于private 成员变量 使用反射机制设置:

    顺便对public的属性name试一下这个方法可不可以,发现可以:


再来尝试调用方法:    

    可以发现method和invoke方法的参数永远是一样多的

java.lang.Class 是反射的源头:

        通过编译(javac.exe),生成对应的 .class 文件,之后使用java.exe 加载(JVM的类加载器)此 .classw 文件家在道=到内存后,就是一个运行时类,存在于缓存区,那么这个运行时类本身就是一个Class的实例。

            1.每个运行时类只加载一次

            2.有了Class的实例后,才可以进行如下操作:

                    1)创建对应的运行时类

                    2)获取对应运行时内的完整结构(属性、方法、构造器、内部类、父类、所在的

                            、注解等等

                    3)调用对应运行时类的指定结构(属性、方法、构造器)

                    3)应用于动态代理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。