![](https://img-blog.csdnimg.cn/97da18c5021a4050b1ebc3e349bbee8d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java反射机制详细学习
文章平均质量分 74
Java反射机制详细学习
GodAiro
hey
展开
-
类加载(基本说明、流程图、类加载各个阶段完成的任务)
总的来说,静态加载就是在编译的时候就会加载相关的类,它会检查你的类是否正确,各方面会去检测。而动态加载是执行到这一段的时候才会加载,如果运行的时候没有用到这个类,即使不存在也不会报错,这样就降低了一定的依赖性。......原创 2022-07-18 23:28:28 · 1198 阅读 · 0 评论 -
Class类(基本介绍、常用方法)
从类图来看,Class就是一个类,和其他类是一样的,只是这个类的使用方法和功能有点特殊性,仅此而已。类加载器,也就是ClassLoader,里面有个方法叫loadClass(),通过这个方法来完成类加载,生成某个类对应的Class对象。如果加载的类不是同一个那Class肯定就不同了。验证一下我们可以创建一个Dog类这里肯定跟上面是不相同了,Dog类和Cat类已经不是同一个类,也就是说Dog类在堆内存中也会有一个Class对象,cls1和cls2对应的是同一个。......原创 2022-07-17 23:10:48 · 11715 阅读 · 0 评论 -
反射机制(原理示意图、优缺点、调优)
、比如说有一个Cat.java的源代码文件,里面有name属性,Cat构造器,hi方法然后对它进行编译,通过编译就会得到一个Cat.class的字节码文件那么字节码文件里面有什么呢?里面肯定是包含了属性,构造器,方法等等。如果我们在Runtime运行阶段,去new一个Cat对象,并且调用hi()方法那么它会把字节码文件加载到内存里的堆里面,就会生成Class类对象(Cat的),里面就有成员变量、构造器、成员方法等等。。......原创 2022-07-17 22:59:18 · 284 阅读 · 0 评论 -
一个需求引出反射
如果按照传统的写法,去调用cry(),而不是hi方法,那就要修改源码,我们得把cat.hi()修改成cat.cry()。有一个配置文件re.properties,这个配置文件指定了一些信息,有一个类的全路径,还指定了类的一个方法hi。通过cls对象可以得到加载的类的哪个方法,methodName所代表的那个方法对象,拿到这个过后就可以调用了。通过cls.newInstance()可以得到你加载的类的对象实例,这个对象类型,真正的运行类型就是Cat。也就是说,在反射的世界里,它把方法也可以看成是对象。...原创 2022-07-17 22:43:39 · 122 阅读 · 0 评论