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

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

 2010-02-24 00:00:00 来源:WEB开发网   
核心提示: 清单 4. ProxyEx 的静态方法 getMethodEntity()privatestaticStringgetMethodEntity(Methodmethod){Stringtemplate="\n{"+"\njava.lang.reflect.Metho

清单 4. ProxyEx 的静态方法 getMethodEntity()

private static String getMethodEntity( Method method ) 
{ 
  String template = "\n{" 
    + "\n  java.lang.reflect.Method method = null;" 
    + "\n  try{" 
    + "\n    method = &Class.getMethod( \"&MethodName\", &ParameterTypes );" 
    + "\n  }" 
    + "\n  catch(Exception e){" 
    + "\n  }" 
    + "\n  Object r = null;" 
    + "\n  try{" 
    + "\n     r = handler.invoke( this, method, &ParameterValues );" 
    + "\n  }&Exceptions" 
    + "\n  &Return" 
    + "\n}"; 
   
  String result = template.replaceAll("&MethodName", method.getName() ) 
    .replaceAll("&Class", method.getDeclaringClass().getName() + ".class") 
    .replaceAll("&ParameterTypes", getMethodParameterTypesHelper(method)) 
    .replaceAll("&ParameterValues", getMethodParameterValuesHelper(method) ) 
    .replaceAll("&Exceptions", getMethodParameterThrowablesHelper(method)) 
    .replaceAll("&Return", getMethodReturnHelper( method ) ); 
   
  return result; 
} 

当为 Class 类型对象生成该类型对应的字符代码时,可能涉及数组类型,反推过程会需要按递归方法生成代码,这部分工作由 getTypeHelper 方法提供

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

Tags:Java 动态 代理

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