scala注释参数需要是常量,但最终的val不能成功

Nic*_*oiu 10 annotations scala compiler-errors

在这个片段中,

@SwaggerDefinition(...authorizationUrl = 
SecurityConstants.authorizationUrl)
Run Code Online (Sandbox Code Playgroud)

鉴于此

final object SecurityConstants {
  final val authorizationUrl: String =..
}
Run Code Online (Sandbox Code Playgroud)

(两个决赛中只有一个应该没问题,但仍然存在)我期待/希望这可以用2.12.3编译,但是它给出了"注释参数需要是一个常量;找到:SecurityConstants.authorizationUrl [error] authorizationUrl = SecurityConstants.authorizationUrl,"

在注释中调用Java静态方法System.getenv("a")也会带来相同的错误,即

@SwaggerDefinition(...authorizationUrl = System.getenv("a"))
Run Code Online (Sandbox Code Playgroud)

请帮忙,Nicu M.

ghi*_*hik 12

final val 在两个条件下,引用可以用作Java注释参数:

  1. 分配给的值final val必须是文字.
  2. 不能明确指定您的类型final val.

所以,这将工作:

final val authorizationUrl = "http://something.com"
Run Code Online (Sandbox Code Playgroud)

但这些工作:

final val authorizationUrl = "http://something.com".trim
final val authorizationUrl: String = "http://something.com"
Run Code Online (Sandbox Code Playgroud)

条件没有.2可能看起来特别奇怪,但编译器需要在内部保留final val不仅包含String某个特定文字字符串值的信息.