您的位置:首页 > 其它

override的方法,为什么会被自动执行?

2017-03-06 11:19 351 查看
方法是不会自动执行的,如果要执行肯定是被调用了。

Runnable接口中的 run方法,HttpServlet中的doGet、doPost方法、过滤器类中的doFilter方法、JSP扩展标签方法中的doTag方法、Applet中的paint方法等等,甚至运行程序时的main方法,都会在一定时机自动调用。这些都是在哪里规定的?
虚拟机?解释器?配置文件?
这仅仅是一种API层面的,设计模型上涉及事件驱动结构、观察者等模式,技巧上的一种“控制反转”。
实现上也有用回调实现的。

都是在特定情况以其控制环境的控制器“调用”执行这个特定的接口方法,
比如
runnable.run()
servlet.doPost();
applet.paint(g);

所举的都是在java的运行库中以java代码实现的,类似的机制自己也可以用。
属于一种或几种设计模式的有机结合。

是启动了一个线程:


或者监听器?

这个只是表面的现象。其实每个方法都会有若干个监听器,来监听所发生的事件。当发生了事件以后,就会触动监听器。当然,对应的方法就会被调用。在用户看来,好像好多方法都是自动被调用的。当你分析完源代码了以后会发现,有好多监听器(Listener)。
都不是!

总结:没有自动执行这么一说,肯定是被调用了。那么javax.servlet.Filter类的doFileter是被谁调用的?这个需要查一下,是不是使用了jvm、线程、tomcat等技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: