开发学院软件开发Java 用 BCEL 设计字节码: 直接在方法的调用处添加方法... 阅读

用 BCEL 设计字节码: 直接在方法的调用处添加方法

 2009-09-23 00:00:00 来源:WEB开发网   
核心提示:这个最接近之前提出的API转换问题这个需要扫描源代码找到此类的方法调用处,然后在方法调用处的前后添加指令即将代码转换成如下形式:publicclassStringBuilder{publicStringbuildString(intlength){Stringresult="";for(inti=0

这个最接近之前提出的API转换问题

这个需要扫描源代码找到此类的方法调用处,然后在方法调用处的前后添加指令

即将代码转换成如下形式:

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

转换代码如下:

先扫描这个类中的各个方法

我准备改变一下生成策略,不自己写指令了,这个自己写指令比较麻烦,但要加的代码比较多时比较容易出错,当所加的代码有if,跳转语句,自己根本就不会如何写添哪些指令,这种写类似汇编指令总是很麻烦的。

1 2 3 4  下一页

Tags:BCEL 设计 字节

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接