【问题标题】:Can I match class that implements annotated Interface with knowledge only about annotation type?我可以将实现带注释接口的类与仅关于注释类型的知识相匹配吗?
【发布时间】:2017-03-23 13:19:01
【问题描述】:

就像在主题中一样。我有我的资源类:

public class HelloWorldEndpoint implements IRest {

    public String sayHello()
    {
      return "Hello world!";
  }

}

和接口:

@Path("/helloworld")
public interface IRest {

    @GET
    @Path("/hello")
    String sayHello();
}

是否可以仅使用 @Path 类注释来匹配 HelloWorldEndpoint 中的 sayHello() ?这是资源类实现的非常具体的示例,但它表明可以在类中没有任何注释的 REST 端点。我尝试过 inheritsAnnotation()isAnnotatedWith() 但不幸的是,它并没有那样工作。我的目标是找到所有资源类:)

【问题讨论】:

    标签: javaagents byte-buddy


    【解决方案1】:

    接口的注解不是按照 Java 语言规范继承的。例如,它们都不会被反射 API 公开。

    为了发现注解,您可以手动遍历类层次结构并查找有问题的注解。 hasSuperType(isAnnotatedWith(...)) 可以做到这一点。请注意,这是一个相当昂贵的匹配条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多