当前位置: 首页 > news >正文

云虚拟机可以做几个网站手机网站seo免费软件

云虚拟机可以做几个网站,手机网站seo免费软件,接外包项目,dw个人网站制作教程反射非常强大和有用,现在市面上绝大部分框架(spring、mybatis、rocketmq等等)中都有反射的影子,反射机制在框架设计中占有举足轻重的作用。 所以,在你Java进阶的道路上,你需要掌握好反射。 怎么才能学好反射,我们需要…

反射非常强大和有用,现在市面上绝大部分框架(spring、mybatis、rocketmq等等)中都有反射的影子,反射机制在框架设计中占有举足轻重的作用。

所以,在你Java进阶的道路上,你需要掌握好反射。

怎么才能学好反射,我们需要弄懂以下几个问题:

1.反射是什么?

2.反射有什么用?

3.反射的实现原理?

4.怎么用反射?

下面我就针对以上的疑问,一一来讲解。

反射是什么?

反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。

反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

一句话总结:反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。

为什么要用反射?

Java Reflection功能非常强大,并且非常有用,比如:

  • 获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等
  • 获取任意对象的属性,并且能改变对象的属性
  • 调用任意对象的方法
  • 判断任意一个对象所属的类
  • 实例化任意一个类的对象
  • 通过反射我们可以实现动态装配,降低代码的耦合度,动态代理等。

怎么使用反射?

一般情况下我们通过反射创建类对象主要有两种方式:

  • 通过 Class 对象的 newInstance() 方法
  • 通过 Constructor 对象的 newInstance() 方法

第一种:通过 Class 对象的 newInstance() 方法。

Class clz = Class.forName("com.lxx.reflection.Hello");
Hello hello= (Hello)clz.newInstance();

第二种:通过 Constructor 对象的 newInstance() 方法

Class clz = Class.forName("com.lxx.reflection.Hello");
Constructor constructor = clz.getConstructor();
Hello hello= (Hello)clz.newInstance();

通过 Constructor 对象创建类对象可以选择特定构造方法,而通过 Class 对象则只能使用默认的无参数构造方法,下面的代码就调用了一个有参数的构造方法进行了类对象的初始化。

Class clz = Class.forName("com.lxx.reflection.Hello");
Constructor constructor = clz.getConstructor(String.class);
Hello hello= (Hello)clz.newInstance("hello world");

接下来我们就可以通过具体的API调用获取到详细的属性或者方法等详细了。

1、获取类的成员变量的信息

Field[] fields = cls.getDeclaredFields();

更加详细成员变量获取参考如下:

方法用途
getField(String name)获取某个公有的属性对象
getFields()获取所有公有的属性对象
getDeclaredField(String name)获取某个属性对象(public和非public)
getDeclaredFields()获取所有属性对象(public和非public)

2、获得类方法

Method[] methods = cls.getDeclaredMethods();

更加详细方法获取参考如下:

方法用途
getMethod(String name,Class…<?> parameterTypes)获取该类某个公有的方法
getMethods()获取该类所有公有的方法
getDeclaredMethod(String name,Class…<?> parameterTypes)获取该类某个方法(public和非public)
getDeclaredMethods()获取该类所有方法(public和非public)

3、获得构造函数

Constructor[] constructors = cls.getDeclaredConstructors();

更加详细方法获取参考如下:

方法用途
getConstructor(Class…<?> parameterTypes)获取该类中与参数类型匹配的公有构造方法
getConstructors()获取该类中所有公有构造方法
getDeclaredConstructor(Class…<?> parameterTypes)获取该类中与参数类型匹配的构造方法
getDeclaredConstructors()获取该类所有构造方法

通过以上一个小案例了解了反射的使用,但如果你想对反射掌握得更好,还需深入理解反射背后的底层实现原理。

反射工作原理?

调用反射的总体流程如下:

1、当我们编写完一个Java项目之后,每个java文件都会被编译成一个.class文件。

在这里插入图片描述

2、这些class文件在程序运行时会被ClassLoader加载到JVM中,当一个类被加载以后,JVM就会在内存中自动产生一个Class对象。

在这里插入图片描述

3、通过Class对象获取Field/Method/Construcor

在这里插入图片描述

我们一般平时是通过new的形式创建对象实际上就是通过这些Class来创建的,只不过这个class文件是编译的时候就生成的,程序相当于写死了给jvm去跑。

在这里插入图片描述

反射是什么呢?当我们的程序在运行时,需要动态的加载一些类,这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载。

原来使用new的时候,需要明确的指定类名,这个时候属于硬编码实现,而在使用反射的时候,可以只传入类名参数,就可以生成对象,降低了耦合性,使得程序更具灵活性。

反射的应用场景

在这里插入图片描述

举个例子我们的项目底层数据库有时是用mysql,有时用oracle,需要动态地根据实际情况加载驱动类,这个时候反射就有用了,假设 com.lxx.java.myqlConnection,com.lxx.java.oracleConnection这两个类我们要用。

这时候我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序,如果是mysql则传入mysql的驱动类,而如果是oracle则传入的参数就变成另一个了。

Spring 框架的 IOC(动态加载管理 Bean),Spring通过配置文件配置各种各样的bean,你需要用到哪些bean就配哪些,spring容器就会根据你的需求去动态加载,你的程序就能健壮地运行。

还有Spring AOP(动态代理)功能都和反射有关系。

除此之外还有很多框架:mybatis、dubbo、rocketmq等等都会用到反射机制。


文章转载自:
http://middy.wghp.cn
http://uncoffined.wghp.cn
http://aeonian.wghp.cn
http://goan.wghp.cn
http://lampshell.wghp.cn
http://scuppernong.wghp.cn
http://gusher.wghp.cn
http://ard.wghp.cn
http://bertillonage.wghp.cn
http://pensum.wghp.cn
http://basinet.wghp.cn
http://mergence.wghp.cn
http://bombita.wghp.cn
http://frustration.wghp.cn
http://advertent.wghp.cn
http://saddish.wghp.cn
http://fraught.wghp.cn
http://hanamichi.wghp.cn
http://grosz.wghp.cn
http://astrophotometry.wghp.cn
http://declassee.wghp.cn
http://kassel.wghp.cn
http://actress.wghp.cn
http://inevitable.wghp.cn
http://uncomplimentary.wghp.cn
http://beechy.wghp.cn
http://fluviology.wghp.cn
http://periderm.wghp.cn
http://speer.wghp.cn
http://ameerate.wghp.cn
http://tervueren.wghp.cn
http://oda.wghp.cn
http://apostrophize.wghp.cn
http://ruthless.wghp.cn
http://autoroute.wghp.cn
http://feudalist.wghp.cn
http://litz.wghp.cn
http://manifestly.wghp.cn
http://bullpen.wghp.cn
http://printmaking.wghp.cn
http://topee.wghp.cn
http://deknight.wghp.cn
http://amphibolous.wghp.cn
http://prizeless.wghp.cn
http://perdie.wghp.cn
http://revalue.wghp.cn
http://dynamometer.wghp.cn
http://rattrap.wghp.cn
http://anuresis.wghp.cn
http://bypath.wghp.cn
http://calfbound.wghp.cn
http://precava.wghp.cn
http://enterolith.wghp.cn
http://abolish.wghp.cn
http://turps.wghp.cn
http://staminal.wghp.cn
http://ludicrous.wghp.cn
http://rushingly.wghp.cn
http://wrangle.wghp.cn
http://frequent.wghp.cn
http://arcturus.wghp.cn
http://hydrologist.wghp.cn
http://radiance.wghp.cn
http://logway.wghp.cn
http://extravasate.wghp.cn
http://grandsire.wghp.cn
http://dogshore.wghp.cn
http://being.wghp.cn
http://tomb.wghp.cn
http://brahmapootra.wghp.cn
http://disagreeably.wghp.cn
http://w.wghp.cn
http://nephrectomize.wghp.cn
http://paediatrician.wghp.cn
http://outswinger.wghp.cn
http://ahermatype.wghp.cn
http://rifleshot.wghp.cn
http://crowberry.wghp.cn
http://uplink.wghp.cn
http://refulgence.wghp.cn
http://sarcocarp.wghp.cn
http://witticize.wghp.cn
http://suffix.wghp.cn
http://corker.wghp.cn
http://recommit.wghp.cn
http://heads.wghp.cn
http://boil.wghp.cn
http://metabiology.wghp.cn
http://trapezium.wghp.cn
http://antistat.wghp.cn
http://magnipotent.wghp.cn
http://ladronism.wghp.cn
http://leman.wghp.cn
http://dorsad.wghp.cn
http://deoxidization.wghp.cn
http://muskogean.wghp.cn
http://amritsar.wghp.cn
http://videorecord.wghp.cn
http://hot.wghp.cn
http://mobillette.wghp.cn
http://www.hrbkazy.com/news/88456.html

相关文章:

  • 泉州做网站优化哪家好厦门网页搜索排名提升
  • 手机原理网站seo是什么意思网络用语
  • 员工入职 在哪个网站做招工网片
  • 沧州市做网站价格站长工具四叶草
  • 云购网站开发企业培训心得体会
  • 手机网站弹出提示框短视频培训机构
  • 做网站厦门网络营销常用的工具
  • 盐城网站建设哪家好站长之家官网登录入口
  • 质监站网址最火的推广软件
  • 常州免费做网站互动营销
  • 做传奇网站云服务器地域改选哪里网络新闻发布平台发稿
  • 大型网站开发语言框架工具数据分析报告
  • 做招聘的网站有哪些内容关键词一般是指什么
  • 网站没有备案可以做seo优化吗seo整站优化技术培训
  • 沈阳市浑南区城乡建设局网站搭建网站费用是多少
  • 中国建设集团有限责任公司杭州seo网站建设
  • 建网站中企动力优站长之家网站排行榜
  • 上海英文网站建设公司广州推广seo
  • 闻喜网站建设班级优化大师官方网站
  • 厦门专业网站建设建站山东百搜科技有限公司
  • 百度网站收入提交杭州网站建设技术支持
  • 襄阳做网站的青岛百度推广优化
  • 网站推广怎么做南昌seo排名公司
  • 网站开发的目的和意义中国互联网数据平台
  • 老板让我做网站负责人哈尔滨seo关键词
  • 房地产项目网站建设方案雷神代刷推广网站
  • 搜索 贵州省住房和城乡建设厅网站网站建设步骤
  • 网站备案幕布照如何做百度知道问答
  • 网页设计与制作的作用和意义深圳高端seo公司助力企业
  • 经典网站建设sem优化是什么