首页 > 解决方案 > 如何使用注释添加覆盖案例类字段?

问题描述

问题

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

case class Foo (
  bar: Int
)

new Foo {
  @Annotation
  override val bar: Int
}

在上面的代码中,我尝试创建一个匿名案例类,它使用 annotation覆盖bar类的字段。编译返回“非法开始声明Foo@Annotation@Annotation

语境

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

它被用作类似的东西:

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

标签: scalaannotationsswagger

解决方案


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

  • 不要为构造函数提供参数

  • 不要实施bar

以下代码在 2.13 中编译

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

推荐阅读