Java SE 6新特性: Instrumentation 新功能

http://tech.ddvip.com   2007年08月11日    社区交流

内容摘要:本系列 文章主要介绍 Java SE 6 在 API 库方面的部分新特性,通过一些例子和讲解,帮助开发者在编程实践当中更好的运用 Java SE 6,提高开发效率。

  TransClass 类和 Transformer 类的代码不变,参看上一节介绍。 含有 main 函数的 TestMainInJar 代码为:

public class TestMainInJar {
  public static void main(String[] args) throws InterruptedException {
    System.out.println(new TransClass().getNumber());
    int count = 0;
    while (true) {
      Thread.sleep(500);
      count++;
      int number = new TransClass().getNumber();
      System.out.println(number);
      if (3 == number || count >= 10) {
        break;
      }
    }
  }
}

  含有 agentmain 的 AgentMain 类的代码为:

import java.lang.instrument.ClassDefinition;
import java.lang.instrument.Instrumentation;
import java.lang.instrument.UnmodifiableClassException;
public class AgentMain {
  public static void agentmain(String agentArgs, Instrumentation inst)
      throws ClassNotFoundException, UnmodifiableClassException,
      InterruptedException {
    inst.addTransformer(new Transformer (), true);
    inst.retransformClasses(TransClass.class);
    System.out.println("Agent Main Done");
  }
}

  其中,retransformClasses 是 Java SE 6 里面的新方法,它跟 redefineClasses 一样,可以批量转换类定义,多用于 agentmain 场合。

来源:IBM    作者:胡睿 吕晶    责编:豆豆技术应用

正在加载评论...