byte-buddy - 声明的作用是什么?Bytebuddy 中的 ElementMatcher
问题描述
任何人都可以解释该语句到底是做什么的?为什么它把一层包裹成一层。
匹配器是:
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"))
解决方案
Byte Buddy 元素匹配器通常可以嵌套,通过组合几个注释来匹配甚至复杂的条件。如果你想匹配任何带有特定名称注释的方法,你需要一个额外的 matcher named
:
declaresMethod(isAnnotatedWith(named("com.agent.tool.Trace")))
推荐阅读
- java - Java networkaddress.cache.ttl 和 networkaddress.cache.negative.ttl 缓存刷新率
- flutter - 如何在颤动中向页面添加底部导航项
- python - 在 Python 中使用 Regex 在 PartNo- 之前添加 PartNoId 标识符
- kubernetes-helm - 如何使用 ingress-nginx 图表仅创建内部负载均衡器?
- android - 提交与移动应用同名的 Android TV 应用
- amazon-web-services - AWS 外部 SAML IdP?
- python - Python 发布到 PHP 发布
- regex - 用于在 Azure 中使用 Terraform 进行过滤的 RegEx
- javascript - 从选项数量中获取所有变体
- c++ - 在子类中初始化列表