初学者第57节之反射

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方法获取字段的新值。

✎备注

这一节就写完了,大家有什么问题或者有什么建议可以多多指正,也可以私聊小白或者留言。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G05KEL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券