Java 如何使用bytebuddy获得方法的一致性

Java 如何使用bytebuddy获得方法的一致性,java,performance,byte-buddy,Java,Performance,Byte Buddy,我试图通过java应用程序使用度量来了解性能。我使用java代理和get metrics的bytebuddy。在我的测试程序中,我要检查的方法运行了好几次。只有当它传递一个包含名称“connector”的参数时,我才需要获取度量。所以我想用bytebuddy得到这个,我用了@AllArguments Object[]args来实现这个。但是我试着用这个来代替我的计时工具课。 这是我的密码 class Agent { public static void premain(String argum

我试图通过java应用程序使用度量来了解性能。我使用java代理和get metrics的bytebuddy。在我的测试程序中,我要检查的方法运行了好几次。只有当它传递一个包含名称“connector”的参数时,我才需要获取度量。所以我想用bytebuddy得到这个,我用了
@AllArguments Object[]args
来实现这个。但是我试着用这个来代替我的计时工具课。 这是我的密码

class Agent {

public static void premain(String arguments, Instrumentation instrumentation) {
    System.out.println("Premain");
    new AgentBuilder.Default()
            .with(new AgentBuilder.InitializationStrategy.SelfInjection.Eager())
            .type((ElementMatchers.nameContains("ConnectorCallback")))
            .transform(
                    new AgentBuilder.Transformer.ForAdvice()
                            .include(MethodListner.class.getClassLoader())
                            .advice(ElementMatchers.any(), MethodListner.class.getName())
            ).installOn(instrumentation);}}
这是我的计时设备课

public class TimerAdvice {


@Advice.OnMethodEnter
static void enter(@Advice.Origin String method , @AllArguments Object[] args)throws Exception  {

    if (changeMethodName(method).equals("BalConnectorCallback")) {
        //Metrics works
    }

}

@Advice.OnMethodExit
static void exit(@Advice.Origin String method, @AllArguments Object[] args) throws Exception {

    if (changeMethodName(method).equals("done")) {
       //Metrics works
        }
    }

 public static String changeMethodName(String method) {
    String newMethod = method.substring(0, method.lastIndexOf('('));
    newMethod = newMethod.substring(newMethod.lastIndexOf('.') + 1);
    //newMethod = newMethod.replace(".", " ");
    return newMethod;

}}
当我使用
@AllArguments Object[]args
时,只有这台TimerDevice在没有它的情况下才能正常工作。我的代码中有这个问题吗?
任何帮助。

您可能导入了错误的注释。您要查找的注释是
@Advice.AllArguments

这种命名冲突是不幸的,但现在改变它为时已晚。所有可兼容的注释都带有前缀。Tge-others用于方法委托