反射
类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并编译了一个新类,就会产生一个Class对象(更恰当的来说,是被保存在一个同名的.class文件中)。一旦某个类的Class对象被载入内存,它就用来创建这个类的所有对象。对于反射来说,就是在运行时打开与检查.class文件。
静态代理
静态代理在编译期就决定了被代理对象。
动态代理
动态代理,通过反射在运行时动态的生成代理类。这是使用java提供的Proxy.newProxyInstance与InvocationHandler实现。前者生成代理类,后者可以在其中添加额外的功能