| 可变参数 
 它被调用的时候, 编译器会将它当做一个数组.在访问的时候,也是以数组的形式来用.
 
 
 
 获取 Class 对象的方式 :
 
 当类(例如String)已经被加载到内存中时,有两种方式:
 
 String.class
 
 Class.forName(“java.lang.String”)
 
 当类还没有加载到内存中时,需要先用类加载器,或者一个对象来调用:
 
 new SomeClass().getClass()
 
 
 
 创建动态代理的步骤:
 
 1,用Class proxyClass = Proxy.getProxyClass(); 创建proxy在内存中的class文件.
 
 2,用这个class文件.getConstructor().getNewInstance() 来获取Proxy的对象.
 
 (这里可以不可以直接new出来呢?)
 
 
 
 Class和Constructor的对象都有newInstance吗?
 
 查了下API,是的.Constructor只创建这个class的对象.
 
 Constructor是返回一个Object的对象.
 
 getConstructor的参数接受的是参数的类型的class文件.
 
 Constructor对象的newInstance返回的是Object对象.
 
 
 
 要用到Proxy类,现在我只知道它跟动态代理有点关系.它在java.lang.reflect这个包中.
 
 它创建了一个接口的代理.
 
 Proxy(InvocationHandler h)
 
 那么这个是那个用字节码文件返回的构造方法吗?
 
 嗯,构造方法返回的是Proxy的对象.
 
 而Proxy.getProxyClass()则是返回Proxy的字节码文件,这句话在内存中生成了字节码文件,虽然它还没有对象.
 
 那获取构造方法,我可不可以直接 Proxy p = new Proxy(h)呢?
 
 为什么张孝祥要用反射来获取构造方法呢?嗯,刚才测试了.
 
 既然可以通过API直接查Proxy的构造方法,那为什么还要用class.getConstructor呢?
 |