2011-10-11 44 views
0

我創建了一個簡單的類的println和反射

(1) public class Inspector implements ClassFileTransformer{ 
    (2)  public byte[] transform(ClassLoader loader, 
String className, Class<?> clazz, 
    (3)    ProtectionDomain domain, byte[] bytes) 
    (4)  throws IllegalClassFormatException { 
    (5)   // clazz.getName(); 
    (6)   System.out.println("in Transform"); 
    (7)   return bytes; 
      } 

      public static void premain(String agentArgument, 
        Instrumentation instrumentation) { 
       System.out.println("in premain"); 
       instrumentation.addTransformer(new Inspector()); 
      } 

輸出:在的premain \ n變換

然後,如果我去掉行號(5),I在這條線後不能得到我所有的println

輸出:在倍美力\ n

,它是一樣的,當我使用從類每類方法......

任何想法?

回答

0

我認爲這可能是因爲clazz爲空。它只提供給類重新定義或轉換。 您的transform()方法可能會引發NPE,它與返回null的效果相同,這意味着不執行轉換。