Doppeldefinitionsfehler trotz unterschiedlicher Parametertypen
Bei den folgenden beiden Methoden wird ein Fehler mit doppelter Definition angezeigt:
def apply[T](state: T, onRender: T => Graphic,
onMouseEvent: (MouseEvent, T) => T): GraphicPanel =
apply(state, onRender, onMouseEvent = Some(onMouseEvent))
und
def apply[T](state: T, onRender: T => Graphic,
onKeyEvent: (KeyEvent, T) => T): GraphicPanel =
apply(state, onRender, onKeyEvent = Some(onKeyEvent))
Das sind beide Methodenüberladungen für die allgemeinerenapply
Methode mit der Unterschrift:
def apply[T](state: T, onRender: T => Graphic,
onTickEvent: Option[T => T] = None, fps: Int = 30,
onMouseEvent: Option[(MouseEvent, T) => T] = None,
onMouseMotionEvent: Option[(MouseEvent, T) => T] = None,
onMouseInputEvent: Option[(MouseEvent, T) => T] = None,
onKeyEvent: Option[(KeyEvent, T) => T] = None)
Ich würde davon ausgehen, dass ein obwohl die KlassenKeyEvent
undMouseEvent
haben eine gemeinsame Oberklasse (InputEvent
) sollte der Compiler dennoch in der Lage sein, zwischen ihnen zu unterscheiden. Es wird jedoch der Fehler ausgelöst:
double definition: method apply: [T] (state: T, onRender: T => edu.depauw.scales.graphics.Graphic, someOnKeyEvent: (java.awt.event.KeyEvent, T) => T) edu.depauw. scale.graphics.GraphicPanel und Methode gelten: [T] (Status: T, onRender: T => edu.depauw.scales.graphics.Graphic, onMouseEvent: (java.awt.event.MouseEvent, T) => T) edu .depauw.scales.graphics.GraphicPanel in Zeile 115 haben nach dem Löschen den gleichen Typ: (state: Object, onRender: Function1, someOnKeyEvent: Function2) edu.depauw.scales.graphics.GraphicPanel
Hat jemand eine Idee, was los ist? Zugegeben, ich weiß nicht, was mit der Phrase gemeint ist"nach dem Löschen"Vielleicht ist eine Erklärung, wie das funktioniert, hilfreich.