第 53 章 注解继承


摘要

JAX-RS 注释可以通过子类和实施注释的类来继承。继承机制允许子类和实施类覆盖从其父级继承的注解。

概述

继承是 Java 中更强大的机制之一,因为它允许开发人员创建通用对象,然后可以专门满足特定的需求。JAX-RS 允许用于将类映射到资源从超级类继承的标注来保持此电源。

JAX-RS 的注解继承也扩展为支持接口。实施类继承其实施的接口中使用的 JAX-RS 注释。

JAX-RS 继承规则提供覆盖继承注释的机制。但是,无法从超级类或接口继承的构造中完全删除 JAX-RS 注释。

继承规则

资源类从它实施的接口继承任何 JAX-RS 注释。资源类也从它们扩展的任何超级类继承任何 JAX-RS 注释。从超级类继承的注解优先于从接口继承的注解。

例 53.1 “注解继承” 中显示的代码示例,K Kaijin 类的 getMonster () 方法从 Kaiju 接口继承了 @Path@GET、@GET、@PathParam 注解。

例 53.1. 注解继承

public interface Kaiju
{
  @GET
  @Path("/{id}")
  public Monster getMonster(@PathParam("id") int id);
  ...
}

@Path("/kaijin")
public class Kaijin implements Kaiju
{
  public Monster getMonster(int id)
  {
    ...
  }
  ...
}

覆盖继承的注解

覆盖继承的注解与提供新注解一样容易。如果子类或实施类为方法提供自己的 JAX-RS 注释,则忽略该方法的所有 JAX-RS 注释。

例 53.2 “覆盖注解继承” 中显示的代码示例中,K Kaijin 类的 getMonster () 方法不会继承 Kaiju 接口中的任何注解。实施类覆盖 @Produces 注释,该注释导致来自接口的所有注释被忽略。

例 53.2. 覆盖注解继承

public interface Kaiju
{
  @GET
  @Path("/{id}")
  @Produces("text/xml");
  public Monster getMonster(@PathParam("id") int id);
  ...
}

@Path("/kaijin")
public class Kaijin implements Kaiju
{

  @GET
  @Path("/{id}")
  @Produces("application/octect-stream");
  public Monster getMonster(@PathParam("id") int id)
  {
    ...
  }
  ...
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.