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

hel*_*nic 0 annotations scala traits

我有一个var的特征

trait Foo {
  @Id var _id: String
}
Run Code Online (Sandbox Code Playgroud)

现在我想初始化var

class Bar(s: String) extends Foo {
  _id = s
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

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 {
Run Code Online (Sandbox Code Playgroud)

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

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

编辑: 我忘了写下extends Foo评论中提到的示例中的内容.所以这个例子是不完整的.

编辑: 当我var在Trait中定义时,@Id var _id: String = _我可以Bar简单地写入_id = s并且正确地继承了注释.但现在不必强迫必须设置该字段.

Jes*_*per 6

_idvar你性格中的摘要Foo.var在课堂上放在它面前Bar:

class Bar(s: String) extends Foo {
  var _id = s
}
Run Code Online (Sandbox Code Playgroud)