如何使用注释添加覆盖 case class 字段?

How to override case class field with annotation addition?

问题

如何使用注释添加覆盖 case class?类似于以下内容:

case class Foo (
  bar: Int
)

new Foo {
  @Annotation
  override val bar: Int
}

在上面的代码中,我尝试创建一个匿名案例 class,它使用注释 @Annotation 覆盖 class Foo 的字段 bar ].编译returns"Illegal start of declaration @Annotation".

上下文

我正在尝试创建一个 swagger 文档服务,但不想在整个模型 classes 中乱扔 swagger 注释。我想创建匿名案例 classes 仅用于 swagger API 路径注释;这些匿名案例 classes 将覆盖带有 swagger 注释的原始模型 classes。

它的用法类似于:

new ApiImplicitParam(
  name = "body",
  dataTypeClass = classOf[DataType {
    @ApiModelProperty
    override val someEnum: SomeEnum
  }],
  required = true,
  paramType = "body"
)

您的代码无法编译,因为您

  • 不为构造函数提供参数

  • 不实施 bar

以下代码在2.13编译

new Foo(???) {
  @Annotation
  override val bar: Int = ???
}