【java】java的反射机制是什么

目录

个人理解:

详细:


个人理解

Java反射可以简单的理解为Class的一种描述,描述文件就是各个类的.class文件

Java启动之后,就加载.Class文件到内存中,有了Class文件对class的描述,java通过反射(Class文件对class的描述),就可以获取类名,注解,属性,构造器,gettter/setter等等,动态调用方法,修改属性,修改属性的访问权限等等

Class c = Class.forName("类的全名"),在运行时才会加载,所以启动之后会把修改的.class加载到内存中,完成动态修改。

详细解释

反射机制是spring的基础。

最简单的例子:ORM,当数据库的表变了,查询的返回变了,那么只需要修改 对应POJO类、mapper即可。

----------------------------------

首先,明白静态语言与动态语言的区别

Java是一门静态语言,但是反射提供了一种黑魔法,允许在运行时去动态修改一个类的定义,一个对象的属性等等,给静态语言加上了“动态”的效果

Java反射可以简单的理解为Class的一种抽象,我们知道,Java是面向对象语言,一切皆对象,都是某种抽象,可以理解反射就是对Class的抽象,所以,通过反射,你可以获取类名,注解,属性,构造器,gettter/setter等等,动态调用方法,修改属性,修改属性的访问权限等等

Java反射的应用很多,如,JSON的序列化/反序列化,JDK动态代理,AOP等

作者:SevenLin澤耿
链接:https://www.zhihu.com/question/377483107/answer/1069386587

2、运行时加载类是动态加载类

Class c = Class.forName("类的全名"),不仅表示了类的类型,还表示了动态加载类,编译不会报错,在运行时才会加载,使用接口标准能更方便动态加载类的实现。功能性的类尽量使用动态加载,而不用静态加载。

很多软件比如QQ,360的在线升级,并不需要重新编译文件,只是动态的加载新的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值