可以在scala中命名常量?

看起来注释需要 Java中的常量.我想这样做:

object ConfigStatics {
  final val componentsToScan = Array("com.example")
}

@PropertySource( ConfigStatics.componentsToScan )   // error: constant value required
class MyConfig extends WebMvcConfigurerAdapter {
}

哪里

@PropertySource( Array("com.example") ) 
class MyConfig extends WebMvcConfigurerAdapter {
}

很好.

遗憾的是,scala不会将静态最终值视为常量值.

这里有什么可做的,或者它是不可能在scala中有命名常量?

解决方法

这看起来像一个bug.

SLS 6.24表示文字数组Array(c1,c2,…)是一个常量表达式.

SLS 4.1表示常量值定义最终val x = e表示x由e代替.

它不会那样工作,所以要么是规范错误,要么是实现错误.

final val j = Array(1,2,3)
  def k = j  // j
  final val x = 3
  def y = x  // 3

这是this question的副本,其中反义词承诺打开一张关于它的票.

那是三年前.我想知道他的终端上是否还有一个黄色的贴子?

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...