gpt4 book ai didi

scala - 你能得到一个类名作为 Scala 注释的常量吗?

转载 作者:行者123 更新时间:2023-12-04 15:29:05 25 4
gpt4 key购买 nike

我有一个 annotation它需要一个描述类名的字符串,例如 com.package.MyClass .

我可以将它作为字符串传递,但希望它引用类本身进行编译/重构。

但是我不能使用 MyClass.getName.classOf[MyClass].toString因为它不是常数:
Compilation error[annotation argument needs to be a constant
有没有办法获得对类名称的 const 引用?或者另一种将类名作为注释中的字符串引用的方法?

最佳答案

您不能使用 classOf因为它在运行时运行并且 Java 注释需要常量作为参数。相反,您可以在编译时使用宏捕获类的名称。

我建议你使用一些可以做到这一点的库,例如 NameOf .

添加对您的 build.sbt 的依赖:

libraryDependencies += "com.github.dwickern" %% "scala-nameof" % "1.0.3" % "provided"

然后你可以像这样使用它:
import com.github.dwickern.macros.NameOf._

@ApiImplicitParams(Array[ApiImplicitParam](
new ApiImplicitParam(
name="Something",
dataType= qualifiedNameOfType[com.package.MyClass])
)
)

关于scala - 你能得到一个类名作为 Scala 注释的常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58133750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com