WEB开发网
开发学院软件开发Java Java 编程的动态性,第 7 部分: 用 BCEL 设计字节... 阅读

Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: publicclassStringBuilder{privateStringbuildString$impl(intlength){Stringresult="";for(inti=0;i<length;i++){result+=(char)(i%26+'a&#

public class StringBuilder 
{ 
  private String buildString$impl(int length) { 
    String result = ""; 
    for (int i = 0; i < length; i++) { 
      result += (char)(i%26 + 'a'); 
    } 
    return result; 
  } 
   
  private String buildString(int length) { 
    long start = System.currentTimeMillis(); 
    String result = buildString$impl(length); 
    System.out.println("Call to buildString$impl took " + 
      (System.currentTimeMillis()-start) + " ms."); 
    return result; 
  } 
   
  public static void main(String[] argv) { 
    StringBuilder inst = new StringBuilder(); 
    for (int i = 0; i < argv.length; i++) { 
      String result = inst.buildString(Integer.parseInt(argv[i])); 
      System.out.println("Constructed string of length " + 
        result.length()); 
    } 
  } 
} 

编写转换代码

用我在 BCEL 类访问一节中描述的 BCEL API 实现添加方法计时的代码。在 JVM 指令级别上的操作使代码比 第 4 部分 中 Javassist 的例子要长得多,所以这里我准备在提供完整的实现之前,一段一段地介绍。在最后的代码中,所有片段构成一个方法,它有两个参数: cgen ——它是 org.apache.bcel.generic.ClassGen 类的一个实例,用被修改的类的现有信息初始化,和方法——要计时方法的 org.apache.bcel.classfile.Method 实例。

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

Tags:Java 编程 动态性

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