Java学习已经进入到第二阶段了,这一阶段让我印象最深的就是反射这个知识点。以前就听说过反射,自己也看过一些资料,在之前的设计模式中也使用过,但还是感觉对它没有一个较深入的了解,通过这次的学习,感觉自己对反射的认识更深了!
推荐一个Java学习群523401738每天晚上在腾讯课堂都有一个Java技术学习课,会有老师分享干货,帮助大家分析解答问题,你愿意来学习吗
一、先看一下反射的概念:
主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
二、反射机制的作用:
1、反编译:.class-->.java
2、通过反射机制访问Java对象的属性,方法,构造方法等;这样好像更容易理解一些,下边我们具体看怎么实现这些功能。
三、在这里先看一下sun为我们提供了那些反射机制中的类:
java.lang.Class;
java.lang.reflect.Constructor; java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
很多反射中的方法,属性等操作我们可以从这四个类中查询。还是那句话要学着不断的查询API,那才是我们最好的老师。
四、具体功能实现:
1、反射机制获取类有三种方法[size=18.6667px]
2、[size=18.6667px],创建对象:获取类以后我们来创建它的对象,利用[size=18.6667px]new[size=18.6667px]Instance[size=18.6667px]:[size=18.6667px] 3,获取属性:分为所有的属性和指定的属性:
a、先看获取所有的属性的写法
b、获取特定的属性,对比着传统的方法来学习:
这样我们就可以获得类的各种内容,进行了反编译。对于Java这种先编译再运行的语言来说,反射机制可以使代码更加灵活,更加容易实现面向对象。
这样的好处是很容易的方便我们变换数据库,例如我们将系统的数据库从SQL Server升级到Oracle,那么我们写两份D层,在配置文件的内容改一下,或者加条件选择一下即可,带来了很大的方便。
当然了,Java中其实也是一样,只不过这里的配置文件为.properties,称作属性文件。通过反射读取里边的内容。这样代码是固定的,但是配置文件的内容我们可以改,这样使我们的代码灵活了很多!
通过Java学习的第二阶段中,我觉得对于Java反射,虽然在运用中它会使我们的软件性能降低,复杂度增加,但如果我们可以灵活的运用它,它能够使我们的代码更加灵活,总的来说利还是大于弊。
网友评论