printLn and 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());
            }

输出:in premain n in Transform

然后,如果我取消注释行号(5),我不能得到这行之后的所有println:

输出:in premain n

,当我使用类中的每个方法时也是一样的。

任何想法?

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

最新更新