Class.forName("ClassName")
等效于 ClassName.class,都是获取ClassName的一个Class实例。
但是后者不会将ClassName进行实例化,但是Class.forName()则会实例化ClassName
RTTI和反射之间真正的区别:
RTTI 在编译时打开和检查.class文件
反射 .class文件在编译时是不可获取的,所以是在运行时打开和检查.class文件
通过反射可以访问到private,protected等方法。
动态代理比静态代理的优势:
动态代理一次可以对某个类的所有函数都有效果。不需要为每个函数都写一遍代理。
而静态代理则需要为每个函数都重写一遍代理动作。
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),new Class[] { Foo.class },handler);