WEB开发网
开发学院软件开发Java Java 动态代理机制分析及扩展,第 1 部分 阅读

Java 动态代理机制分析及扩展,第 1 部分

 2010-02-24 00:00:00 来源:WEB开发网   
核心提示: 然后,来看一下 Proxy 的构造方法:清单 6. Proxy 构造方法//由于Proxy内部从不直接调用构造函数,Java 动态代理机制分析及扩展,第 1 部分(7),所以private类型意味着禁止任何调用privateProxy(){}//由于Proxy内部从不直接调用构造函数,所以pro

然后,来看一下 Proxy 的构造方法:

清单 6. Proxy 构造方法

// 由于 Proxy 内部从不直接调用构造函数,所以 private 类型意味着禁止任何调用 
private Proxy() {} 
 
// 由于 Proxy 内部从不直接调用构造函数,所以 protected 意味着只有子类可以调用 
protected Proxy(InvocationHandler h) {this.h = h;} 

接着,可以快速浏览一下 newProxyInstance 方法,因为其相当简单:

清单 7. Proxy 静态方法 newProxyInstance

public static Object newProxyInstance(ClassLoader loader, 
      Class<?>[] interfaces, 
      InvocationHandler h) 
      throws IllegalArgumentException { 
   
  // 检查 h 不为空,否则抛异常 
  if (h == null) { 
    throw new NullPointerException(); 
  } 
 
  // 获得与制定类装载器和一组接口相关的代理类类型对象 
  Class cl = getProxyClass(loader, interfaces); 
 
  // 通过反射获取构造函数对象并生成代理类实例 
  try { 
    Constructor cons = cl.getConstructor(constructorParams); 
    return (Object) cons.newInstance(new Object[] { h }); 
  } catch (NoSuchMethodException e) { throw new InternalError(e.toString()); 
  } catch (IllegalAccessException e) { throw new InternalError(e.toString()); 
  } catch (InstantiationException e) { throw new InternalError(e.toString()); 
  } catch (InvocationTargetException e) { throw new InternalError(e.toString()); 
  } 
} 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Java 动态 代理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接