Java 猿程之家
免费分享 500G java
大型互联网项目视频
公告通知
本公众专注于为广大Java初学者和爱好者提供一个好的学习交流平台,不管你是编程大佬也好,还是编程小白也好,有问题都随时欢迎加小编微信咨询,小编都会在闲暇时候帮助大家解答工作和学习上遇到的问题,最重要也希望借助平台,多交一些朋友
注:本公众号纯属个人公益公众号,绝对是良心公众号,要喷的话,可以进公众号先看看内容在喷!!!免费分享Java 大型互联网项目实战等资料!只求大家多多支持!多多关注!!
反射
反射是一种功能强大且复杂的机制。它主要是动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
也就是说当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务器来说不言而喻,举个例子我们的项目底层有时是用mysql,有时用oracle,需要动态地根据实际情况加载驱动类,这个时候反射就有用了。
举个小例子假设
反射的优缺点
优点:
1、反射提高了程序的灵活性和扩展性。
2、降低耦合性,提高自适应能力。
3、它允许程序创建和控制任何类的对象,无需提前硬编码目标类。
缺点:
1、性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。
2、使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。
代码演示
下面做一个小例子大概使用一下反射。再不写框架的情况下我们反射使用起来还是比较简单的。
需求:
1.类:Student
2.字段:stuName,stuId,stuNumber
3.构造方法:student();student(stuName,stuId,stuNumber);
4.普通方法:getset方法以及重写一个toString方法。
5.使用类名的全限定名的字符串的参数形式用反射一个无参构实例。
6.在使用反射一个有参实例
结果:
7.使用反射找出类中的所有字段名称以及字段声明类型。
结果
8.使用反射获取类中的所有的方法以及返回类型。
结果
9.利用反射来为私有字段stuName赋值,并且调用getStuName方法。
10.使用所有的set方法为字段赋值,并且使用get方法获取字段的新值。
✎备注
这一节就写完了,大家有什么问题或者有什么建议可以多多指正,也可以私聊小白或者留言。
领取专属 10元无门槛券
私享最新 技术干货