printLn和反射

时间:2011-10-11 07:55:48

标签: java reflection

我创建了一个简单的类

    (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),我就无法在此行之后获取所有println

  
    

输出:在premain \ n

  

当我使用类Class ...

中的每个方法时都是一样的

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为可能是因为clazz为null。它仅用于类重新定义或重新转换。 您的transform()方法可能会抛出一个NPE,它与返回null具有相同的效果,这意味着不执行转换。