该声明有什么作用? Bytebuddy中的ElementMatcher

时间:2019-03-15 19:45:23

标签: byte-buddy

任何人都可以解释该声明的确切含义吗?为什么将一层包裹成一层。

匹配者是:

ElementMatchers.declaresMethod(ElementMatchers
  .isAnnotatedWith(ElementMatchers.named("com.agent.tool.Trace")))

适用于此代码:

package com.agent.tool

@Target({ElementType.METHOD,ElementType.TYPE,ElementType.PACKAGE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Trace {

  String[] argumentName() default {};
}

我可以这样写

ElementMatchers.declaresMethod("com.agent.tool.Trace")

ElementMatchers.declaresMethod((ElementMatchers
   .isAnnotatedWith("com.agent.tool.Trace"))

1 个答案:

答案 0 :(得分:0)

通常可以嵌套Byte Buddy元素匹配器,以通过组合多个注释来匹配甚至复杂的条件。如果要匹配用特定名称的注释注释的任何方法,则需要一个附加的匹配器named

declaresMethod(isAnnotatedWith(named("com.agent.tool.Trace")))