Trait中var的注释不会在子类中继承

时间:2012-04-05 20:18:19

标签: scala annotations traits

我有一个var

的特征
trait Foo {
  @Id var _id: String
}

现在我想初始化var

class Bar(s: String) extends Foo {
  _id = s
}

但是我收到了这个错误:

error: class Bar needs to be abstract, since variable _id in class Foo of type String 
is not defined (Note that variables need to be initialized to be defined) class Bar(s: String) extends Foo {

关键是当使用特征时我会继承注释,我想使用它。 我想有一些带有一些注释注释的特性,并让它们在子类中可用。

有人可以提供想法,提示,解决方案吗?

修改 我忘了写下评论中提到的示例中的extends Foo。所以这个例子是不完整的。

修改 当我使用var在特征中定义@Id var _id: String = _时,我可以简单地Bar_id = s并正确地继承注释。但现在不必强制必须设置字段。

1 个答案:

答案 0 :(得分:6)

_id是您的特质var中的抽象Foo。在课程var中将Bar放在前面:

class Bar(s: String) extends Foo {
  var _id = s
}