首页 课程 师资 教程 报名

Java基础教程之Java反射

  • 2019-09-30 10:17:39
  • 2446次 动力节点

反射是Java中核心技术之一,这里先不定义什么叫反射,先看一个例子

  image.png

  要求:

  1)创建一个person的实例,单不能使用Personperson=newPerson()的方式

  2)调用run()方法,也不能使用person.run()方式

  我们知道要调用方法必须先要有对象,现在不能通过new关键字来实例化对象,只能通过反射来实现。

  image.png

  上面就实现用反射的方式调用preson类中的方法。可能有人要问了,为什么不直接new出来呢?通过反射来创建对象,调用方法多费劲啊?

  关键在于很多时候我们并不能事先知道要new什么对象,相反我们可能只知道一个类的名称和方法名,很多时候这些名称都是写在XML配置当中的。

  好多框架中用到了反射,比如sturts,spring,hibernate等,下面举几个列子说明

  【Strust2】

  在struts.xml中配置的action

  image.png

  定义的action

  image.png

  Struts2框架本身不知道我们有一个TopicAction这个类,但它可以这样做,在struts2框架初始化的时候解析你配置的xml,再找到你配置TopicAction,然后通过反射的技术实例化这个类,等在有人调用的时候通过反射调用topicAction中的方法。

  【Hibernate】

  image.png

  文件的定义

  image.png

  在映射文件中建立了数据表和对象的映射关系,所以我们在hibernate中操作的都是对象,但是底层都会转成sql执行,比如我们要查询一个对象,

  Topictopic=session.get(Topic.class,12);

  执行过程是这样的:

  【类名】==>【表明】==>【发出sql语句】==>【通过反射实例化对象】==>【通过反射调用setXxx()方法把数据库的值设进入】

  总结一下,反射就是在编译期不知道创建那个类,而是在运行期才知道创建那个类,这种情况下就应该考虑到用反射。

  那反射能做什么呢?

  1)获取一个类的内部结构,比如:方法,属性,注解等

  2)运行时对一个Java对象操作,包括实例化对象,调用方法,给属性赋值。

  为什么叫反射呢?

  可能是Java程序在运行时能够看到自己的结构和行为吧,就像看到镜子当中的自己一样,反射了出来。

  以上就是动力节点java培训机构小编介绍的“Java基础教程之Java反射”的内容,希望对大家有帮助,更多java最新资讯请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交