2010-06-08 31 views
6

Tại sao trái đất này không biên dịch? Scala 2.8.0RC3:triển khai giao diện java với lớp scala - loại vấn đề

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 = { 
    ... 
    } 
} 

Lỗi

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 

Trả lời

2

Bạn cần phải thêm override trước khi định nghĩa của logClick trong class Y.

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


EDIT:

Cũng vì lý do Daniel nói dưới đây, bạn thậm chí không cần phải thêm override trước khi phương pháp này. Mã của bạn là đúng như nó được.

+0

Tôi xin lỗi, điều này không khắc phục được sự cố – paintcan

+0

@paintcan, vừa được kiểm tra. Nó hoạt động ở đây. Bạn đang sử dụng phiên bản Scala nào? – missingfaktor

+0

phiên bản là trong bài viết, nhưng kể từ khi bạn nói điều này làm việc cho bạn, chúng tôi sẽ cố gắng để tái tạo các vấn đề trong một dự án với tất cả các crap không liên quan loại bỏ – paintcan

Các vấn đề liên quan