Я хочу создать изменяемый ковариантный класс, поэтому мне нужно добавить более низкий тип, привязанный к методу установки. Но я также хочу, чтобы метод установки устанавливал поле, поэтому я предполагаю, что поле должно иметь привязку одного и того же типа?
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
Что мне нужно сделать?