在Scala 2.11.x中使用函数参数作为注释参数:注释参数需要是常量

时间:2016-04-01 19:27:52

标签: scala annotations scala-2.11

我有一个简单的帮助函数,如下所示:

  def apply[T: ClassTag](self: T, vid: Long): (T with Serializable ) = {   
    self.asInstanceOf[T @SerialVersionUID(vid) with Serializable]
  }

它在Scala 2.10.x中完美编译,但在Scala 2.11.x中我收到以下错误:

17: annotation argument needs to be a constant; found: vid
[ERROR]     self.asInstanceOf[T @SerialVersionUID(vid) with Serializable]
                                                  ^

由于不可能将函数参数声明为final,这限制了我硬编码vid,这是非常低效的。有没有办法绕过这个?

1 个答案:

答案 0 :(得分:0)

宣言中的(自:T,val vid:Long)怎么样?