成都Java培训机构怎么样?java基础教程分享java反射是怎么回事

2022-12-03 0 496

java散射是咋?上面就跟著小贴士一出来看一看java自学基础教程撷取。

射是Java中关键技术众所周知,这儿先不表述甚么叫散射,先看两个范例

public class Person {

public void run() {

System.out.println(Hello Wolrd);

}

}

成都Java培训机构怎么样?java基础教程分享java反射是怎么回事

明确要求:

1) 建立两个person的示例,单无法采用Person person = new Person()的形式

2) 初始化run()形式,也无法采用person.run()形式

他们晓得要初始化形式要需先有第一类,那时无法透过newURL来示例化第一类,根本无法透过散射来同时实现。

public static void main(String[] args) throws Exception {

// 1.先把类读取出来

Class cls = Class.forName(com.qf.doc.Person);

// 2.示例化对象

Object person = cls.newInstance(); //初始化无惨构造,等价于 new Person();

// 3.得到要执行的形式,此时形式也是两个第一类

Method mehtod = cls.getMethod(run);

// 4.初始化形式

mehtod.invoke(person);

}

上面就同时实现用散射的形式初始化preson类中的形式。可能有人要问了,为甚么不直接new 出来呢? 透过散射来建立第一类,初始化形式多费劲啊?

关键在于很多时候他们并无法事先晓得要new 甚么第一类,相反他们可能只晓得两个类的名称和形式名, 很多时候这些名称都是写在XML配置当中的。

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

【Strust2】

在struts.xml中配置的action

topicList.jsp

topicInfo.jsp

表述的action

public class TopicAction extends ActionSupport {

private Page page = new Page();

private ITopicService topicService = new TopicServiceImpl();

private IReplyService replyService = new ReplyServiceImpl();

private Topic topic;

public String findTopicPage() {

topicService.getTopicPage(page);

page.setUrl(forum/topic/findTopicPage?);

return Action.SUCCESS;

}

}

Struts2框架本身不晓得他们有两个TopicAction这个类,但它可以这样做,在struts2框架初始化的时候解析你配置的xml,再找到你配置TopicAction,然后透过散射的技术示例化这个类,等在有人初始化的时候透过散射初始化topicAction中的形式。

成都Java培训机构怎么样?java基础教程分享java反射是怎么回事

【Hibernate】

hibernate建立数据库表和第一类之间的映射

实体类类的表述

public class Topic {

private Integer id;

private String title;

private String content;

private Date createDate;

private User user; // 发帖人

}

映射文件的表述

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

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

执行过程是这样的:

【类名】→【表明】→【发出sql语句】→【透过散射示例化第一类】→【透过散射初始化setXxx()形式把数据库的值设进入】

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

成都Java培训机构怎么样?java基础教程分享java反射是怎么回事

那散射能做甚么呢?

2) 运行时对两个Java第一类操作,包括示例化第一类,初始化形式,给属性赋值。

为甚么叫散射呢?

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

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务