0

私はvarを持つ特性を持っています

trait Foo {
  @Id var _id: String
}

今、変数を初期化したい

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 Trait で を定義すると、簡単に@Id var _id: String = _書き込むことができ、注釈が適切に継承されます。しかし今では、フィールドを設定する必要はありません。 Bar_id = s

4

1 に答える 1

6

_idvarあなたの traitの抽象Fooです。varクラスの前に置くBar

class Bar(s: String) extends Foo {
  var _id = s
}
于 2012-04-05T20:31:28.833 に答える