Что означает следующее сообщение об ошибке?не может переопределить конкретный элемент без третьего элемента, который переопределен как
не может переопределить конкретный элемент без третьего члена, что этого преодолено оба (это правило предназначен для предотвращения `` случайных переопределения «»);
Я пытался сделать изменения в стеке. Это немного позже, поскольку у меня уже есть иерархия, и я пытаюсь изменить поведение, не переписывая много кода.
У меня есть базовый класс, называемый AbstractProcessor, который определяет абстрактный метод вроде этого:
abstract class AbstractProcessor {
def onPush(i:Info): Unit
}
У меня есть несколько существующих черт, чтобы реализовать различные модели поведения OnPush.
trait Pass1 {
def onPush(i:Info): Unit = { /* stuff */ }
}
trait Pass2 {
def onPush(i:Info): Unit = { /* stuff */ }
}
Так что позволяет мне использовать new AbstractProcessor with Pass1
или new AbstractProcessor with Pass2
.
Теперь я хотел бы выполнить некоторую обработку до и после вызова onPush в Pass1 и Pass2 при минимизации изменений кода в AbstractProcessor и Pass1 и Pass2. Я думал о создании черта, которая делает что-то вроде этого:
trait Custom extends AbstractProcessor {
abstract override def onPush(i:Info): Unit = {
// do stuff before
super.onPush(i)
// do stuff after
}
}
И использовать его с new AbstractProcessor with Pass1 with Custom
, и я получил это сообщение об ошибке.
К тому времени, как я получил ваш ответ, я понял, что могу создать черту для onPush, и все это расширяет. Наверное, меня смутило «третье» слово. Интересно, будет ли «без базового члена, который был бы ободрен обоими», даст лучшую подсказку. – huynhjl