学习Spring必学的Java基础知识(1)-Java反射.docxVIP

学习Spring必学的Java基础知识(1)-Java反射.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。):? ??? Java语言允许通过程序化的方式间接对Class进行操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数、属性和方法等。Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这就为使用程序化方式操作Class对象开辟了途径。? 简单实例? ??? 我们将从一个简单例子开始探访Java反射机制的征程,下面的Car类拥有两个构造函数、两个方法以及三个属性,如代码清单3-9所示:? 代码清单3-9? Car? Java代码?? package?com.baobaotao.reflect;?? public?class?Car?{?? ????private?String?brand;?? ????private?String?color;?? ????private?int?maxSpeed;?? ?????? ?????//①默认构造函数?? ????public?Car(){}?? ??????? ?????//②带参构造函数?? ????public?Car(String?brand,String?color,int?maxSpeed){??? ????????this.brand?=?brand;?? ????????this.color?=?color;?? ????????this.maxSpeed?=?maxSpeed;?? ????}?? ?? ?????//③未带参的方法?? ????public?void?introduce()?{??? ???????System.out.println(brand:+brand+;color:+color+;maxSpeed:?+maxSpeed);?? ????}?? ?????//省略参数的getter/Setter方法?? ?????…?? }?? 一般情况下,我们会使用如下的代码创建Car的实例:? Java代码?? Car?car?=?new?Car();?? car.setBrand(红旗CA72);?? 或者:? Java代码?? Car?car?=?new?Car(红旗CA72,黑色);?? 以上两种方法都采用传统方式的直接调用目标类的方法,下面我们通过Java反射机制以一种更加通用的方式间接地操作目标类:? 代码清单3-10? ReflectTest? Java代码?? package?com.baobaotao.?reflect;?? import?java.lang.reflect.Constructor;?? import?java.lang.reflect.Field;?? import?java.lang.reflect.Method;?? public?class?ReflectTest?{?? ????public?static?Car??initByDefaultConst()?throws?Throwable?? ????{?? ????????//①通过类装载器获取Car类对象?? ????????ClassLoader?loader?=?Thread.currentThread().getContextClassLoader();??? ????????Class?clazz?=?loader.loadClass(com.baobaotao.reflect.Car);??? ?????????? ??????????//②获取类的默认构造器对象并通过它实例化Car?? ????????Constructor?cons?=?clazz.getDeclaredConstructor((Class[])null);??? ????????Car?car?=?(Car)cons.newInstance();?? ?????????? ??????????? ??????????//③通过反射方法设置属性?? ????????Method?setBrand?=?clazz.getMethod(setBrand,String.class);?????????? ????????setBrand.invoke(car,红旗CA72);???????? ????????Method?setColor?=?clazz.getMethod(setColor,String.cl

文档评论(0)

5522280 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档