Добавление явного типа в val предотвращает использование val в качестве константы в аннотации

Из REPL:

scala> final val x = "x"
x: java.lang.String("x") = x

scala> @javax.persistence.Table(name = x) case class foo()
defined class foo

scala> final val x:java.lang.String = "x"
x: java.lang.String = x

scala> @javax.persistence.Table(name = x) case class foo()
<console>:6: error: annotation argument needs to be a constant; found: x
       @javax.persistence.Table(name = x) case class foo()

Кто-нибудь может объяснить, почему это работает только без типа?

9
задан scalapeno 28 July 2011 в 18:45
поделиться