Was bedeutet die folgende Fehlermeldung?kann ein konkretes Element ohne ein drittes Element, das von beiden überschrieben wird, nicht überschreiben
kann kein konkretes Element außer Kraft setzen ohne ein drittes Element, das durch beide außer Kraft gesetzt ist (diese Regel ist zu verhindern `` entworfen versehentliche Überschreibungen ‚‘);
Ich habe versucht, stapelbare Modifizierungen durchzuführen. Es ist ein wenig nach der Tatsache, da ich bereits eine Hierarchie an Ort und Stelle habe und ich versuche, das Verhalten zu ändern, ohne viel Code neu schreiben zu müssen.
Ich habe eine Basisklasse namens AbstractProcessor, die eine abstrakte Methode Art wie diese definiert:
abstract class AbstractProcessor {
def onPush(i:Info): Unit
}
Ich habe ein paar vorhandenen Züge, verschiedene OnPush Verhalten zu implementieren.
trait Pass1 {
def onPush(i:Info): Unit = { /* stuff */ }
}
trait Pass2 {
def onPush(i:Info): Unit = { /* stuff */ }
}
Damit ermöglicht es mir new AbstractProcessor with Pass1
oder new AbstractProcessor with Pass2
zu verwenden.
Jetzt möchte ich vor und nach dem onPush-Aufruf in Pass1 und Pass2 einige Verarbeitung vornehmen, während Codeänderungen auf AbstractProcessor und Pass1 und Pass2 minimiert werden. Ich dachte, ein Merkmal zu schaffen, die so etwas wie dies funktioniert:
trait Custom extends AbstractProcessor {
abstract override def onPush(i:Info): Unit = {
// do stuff before
super.onPush(i)
// do stuff after
}
}
und dessen Verwendung mit new AbstractProcessor with Pass1 with Custom
und ich bekam die Fehlermeldung.
Als ich Ihre Antwort bekam, fand ich heraus, dass ich ein Merkmal für onPush erstellen konnte und alles erweitern konnte. Ich glaube, ich wurde durch das "dritte" Wort verwirrt. Ich frage mich, ob "ohne ein Basismitglied, das von beiden überschrieben wird", einen besseren Hinweis geben würde. – huynhjl