2010-06-08 12 views
6

¿Por qué demonios no compilará esto? Scala 2.8.0RC3:implementando la interfaz java con la clase scala - tipo problema

Java

public interface X { 
    void logClick(long ts, int cId, String s, double c); 
} 

Scala

class Y extends X { 
    def logClick(ts: Long, cId: Int,sid: java.lang.String,c: Double) : Unit = { 
    ... 
    } 
} 

error

class Y needs to be abstract, since method logClick in trait X of type 
(ts: Long,cId: Int,s: java.lang.String,c: Double)Unit is not defined 

Respuesta

2

es necesario agregar override antes de la definición de logClick en class Y.

class Y extends X { 
    override def logClick(ts: Long, cId: Int,sid: java.lang.String,c: Double) : Unit = { 
    ... 
    } 
} 


EDIT:

Por la razón Daniel dijo a continuación, usted ni siquiera necesita agregar override antes del método. Tu código es correcto tal como es.

+0

lo siento, amigo, esto no soluciona el problema – paintcan

+0

@paintcan, acaba de probar. Funciona aquí. ¿Qué versión de Scala estás usando? – missingfaktor

+0

versión está en la publicación, pero como dices que esto funcionó para ti vamos a tratar de reproducir el problema en un proyecto con toda la basura extraviada eliminada – paintcan

Cuestiones relacionadas