ミュータブルな共変クラスを作成したいので、setterメソッドにバインドされた下位型を追加する必要があります。しかし、setterメソッドでフィールドを設定したいので、フィールドには同じ型をバインドする必要があると思いますか?
class Thing[+F](initialValue: F) {
private[this] var secondValue: Option[G >: F] = None
def setSecondValue[G >: F](v: G) = {
this.secondValue = Some(v)
}
}
メソッドは正常にコンパイルされます。ただし、secondValueというフィールドはまったくコンパイルされず、次のエラーメッセージが表示されます。
Multiple markers at this line
- ']' expected but '>:' found.
- not found: type G
私は何をする必要がありますか?