这个些地方不太理解

这个些地方不太理解

Class cla = Class.forName(className);  这个 className是哪来的  我获取这个class是做什么用的 ?


Method method = cla.getMethod(methodName,HttpServletRequest.class, HttpServletResponse.class);

这个getMethod的方法为什么里边 要填那三个? 三个含义分别是?

method.invoke(object,request,response);

这个invoke是做什么的



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。这里用到了反射,有关反射的内容在 Java反射 课程中有详细讲解。

1、Class.forName方法是根据传入的类名去获取类对应的Class对象的方法。在这里className是根据路径解析的结果,人为拼出的。我们之后定义控制器controller,就要使用这种规则去定义。这样就可以根据className找到他们了。

http://img1.sycdn.imooc.com//climg/5dd8a71509aa10fc09690297.jpg


2、getMethod 的作用是从Class对象中找到对应的方法。getMethod方法的参数是String类型的 name以及Class类型的参数们。即getMethod方法寻找的依据就是方法名和参数的Class对象。

getMethod(methodName,HttpServletRequest.class, HttpServletResponse.class) methodName是方法名,后面的两个参数是指定方法中需要传递进去的参数对应的Class对象。由于request和response肯定能提供够我们之后Controller中的方法所需要的内容。所以之后Controller中的方法,参数都统一为(HttpServletRequest, HttpServletResponse),例如:

http://img1.sycdn.imooc.com//climg/5dd8aa9f09a8318c12740083.jpg


3、这个method.invoke可以以反射的方式调用指定的方法。后面的参数分别是这个方法所在的类的一个实例,以及这个方法所需的参数对象。这里传入的正好是Controller的实例对象,以及request、response对象。这样,就相当于调用了这个Controller中的指定方法了。

http://img1.sycdn.imooc.com//climg/5dd8a9ef0937308710880142.jpg


如果以上过程有些难以消化,建议再结合Java反射课程进行理解。这里本来就是难点呢~

如果解答了同学的疑问,望采纳~

祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师