球衣中的注解继承

gat*_*son 3 java inheritance annotations jersey-2.0

我正在创建一些具有相同形式的资源类,所以一个好主意是使用 DRY 并使用继承。所以我创建了一个 RootResource 类并在那里放置了一些方法。我想注释它们,然后在子类中实现它们,但它不起作用!这是一个示例代码:

public abstract class RootResource {
  @GET
  @Path("/{id: .*}")
  public abstract String getInfo(String uid);
}

@Path("/user")
public class UserResource extends RootResource{
  public String getInfo(@PathParam("id") String uid) {
    System.out.println("Hello!");
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用球衣 2.6。任何的想法?谢谢。

Alb*_*ura 6

我在使用 Jersey 时遇到了同样的问题。JAX-RSJava EE 标准声明如下:

3.6 注解继承

JAX-RS 注释可以用于 > 超类或已实现接口的方法和方法参数。此类注释由相应的子类或实现类方法继承,前提是该方法及其参数本身没有任何 JAX-RS 注释。超类上的注解优先于已实现接口上的注解。在多个实现的接口中定义的冲突注释的优先级是特定于实现的。

如果子类或实现方法有任何 JAX-RS 注释,则忽略超类或接口方法上的所有注释

虽然 Jersey 作为参考实现对这个声明非常严格,但Resteasy实现更宽松,并且对我有用