今天看到过滤器跟拦截器的时候,发现他们的区别有一点就是:
拦截器是基于java的反射机制的,而过滤器是基于函数回调。
有点不大明白,就查了一下,做个记录!
先从简单的开始!
什么是java的回调函数?
栗子1:
你去图书馆借两本书,但是只有一本有,另外一本被别人借走了,于是你就先借了一本,跟管理员说,等第二本到了,跟你打电话,你来拿。
上面的过程就相当于一个回调函数,你是回调对象,管理员是控制器对象,打电话是回调的方法。
栗子2:
A a=new A;
B b=new B;
int num1 = a.getnum;
int num2 = a.getnum;
int sum = b.sum(num1+num2);
a.show(sum);
这个过程就是一个回调函数,A去生产数据,B去求和,让后再回调A的输出。
一般情况下都是异步处理的,两个独立执行的线程,提高程序效率。
什么是java的反射机制?
我们的java程序开启的时候分为编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制
总的来说,反射机制是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。