Scala 中的自定义注解

Custom annotations in scala

我正在使用 Scala 编程语言。我想创建自定义注释来注释 case class.

的字段

this 线程展示了如何创建它,但我的场景面临两个问题

  1. 可以。在注释中。例如@abc.xyz
  2. 我想创建不带参数的注释。所以我无法创建 case classes

我该怎么做?

谢谢

广告。 1 - 你可以使用反引号在名称中包含 . 但我看到你应该这样做的 0 个理由(你可以将 xyz 放在 abc 包中)

// possible but it's anti-pattern
class `abc.xyz` extends scala.annotation.StaticAnnotation

case class Test(
  @`abc.xyz` field: String
)
// better
package my.abc

class xyz extends scala.annotation.StaticAnnotation

// elsewere

import my.abc

case class Test(
  @abc.xyz field: String
)

广告。 2 注释参数与大小写类有什么关系?注释不必是 case class。有些人使用它是因为在宏中他们可以对物化注释值使用模式匹配,但仅此而已。

case class Foo() extends scala.annotation.StaticAnnotation

class Bar extends scala.annotation.StaticAnnotation

case class Test(
  @Foo foo: String,
  @Bar bar: String
)