6

Why on earth won't this compile? Scala 2.8.0RC3:

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

1 Answer 1

2

You need to add override before the definition of logClick in class Y.

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


EDIT:

For the reason Daniel said below, you don't even need to add override before the method. Your code is right as it is.

Sign up to request clarification or add additional context in comments.

4 Comments

@paintcan, just tested. It works here. What version of Scala are you using?
version is in post, but since you say this worked for you we're going to try to reproduce the issue in a project with all extraneous crap removed
seems like there was an aliasing issue due to an import of java.lang.Double. whoops
You don't really need override when the method being overridden is abstract.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.