Error de doble definición a pesar de los diferentes tipos de parámetros
Recibo un error de doble definición en los dos métodos siguientes:
def apply[T](state: T, onRender: T => Graphic,
onMouseEvent: (MouseEvent, T) => T): GraphicPanel =
apply(state, onRender, onMouseEvent = Some(onMouseEvent))
y
def apply[T](state: T, onRender: T => Graphic,
onKeyEvent: (KeyEvent, T) => T): GraphicPanel =
apply(state, onRender, onKeyEvent = Some(onKeyEvent))
¿Cuáles son los dos métodos de sobrecarga para el más generalapply
Método con la firma:
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)
Supongo que aunque las clasesKeyEvent
yMouseEvent
tener una superclase común (InputEvent
), el compilador debería poder distinguir entre ellos. Sin embargo, está lanzando el error:
doble definición: método aplicable: [T] (estado: T, onRender: T => edu.depauw.scales.graphics.Graphic, someOnKeyEvent: (java.awt.event.KeyEvent, T) => T) edu.depauw. scales.graphics.GraphicPanel y método aplican: [T] (estado: T, onRender: T => edu.depauw.scales.graphics.Graphic, onMouseEvent: (java.awt.event.MouseEvent, T) => T) edu .depauw.scales.graphics.GraphicPanel en la línea 115 tienen el mismo tipo después del borrado: (estado: Object, onRender: Function1, someOnKeyEvent: Function2) edu.depauw.scales.graphics.GraphicPanel
¿Alguien tiene alguna idea de lo que está pasando? Es cierto que no sé lo que significa la frase"despues de borrar", entonces tal vez una explicación de cómo funciona eso podría ser útil.