2016-03-09 3 views
0

Как реализовать абстрактный абстрактный интерфейс Java в scala?Как реализовать абстрактный Java-интерфейс в Scala

Абстрактный интерфейс:

public abstract interface KeyIndex<K> 
    extends Serializable 
{ 
    public abstract long toIndex(K paramK); 

    public abstract Seq<Tuple2<Object, Object>> indexRanges(Tuple2<K, K> paramTuple2); 
} 
+1

Кажется, вы пытаетесь преобразовать Java в Scala? Ближайшим эквивалентом интерфейса является [признак] (http://docs.scala-lang.org/tutorials/tour/traits.html) - попробуйте. – StuartLC

+1

Вы можете оставить ключевое слово «abstract» из вашего интерфейса и деклараций метода, интерфейс и его методы всегда абстрактны. – Jesper

ответ

0

кажется, что ваш KeyIndex класс написан на Java. В Scala каждое поле не помечено private или protected является общедоступным. В Скале нет ключевого слова public. Но реализация класса Java в Scala можно:

class KeyIndexImpl extends KeyIndex[geotrellis.spark.SpatialKey]{ 
    override def toIndex(paramK: geotrellis.spark.SpatialKey): Long = 
    1l 

    override def indexRanges(paramTuple2: (geotrellis.spark.SpatialKey, geotrellis.spark.SpatialKey)): Seq[(AnyRef, AnyRef)] = 
    Seq((paramTuple2, paramTuple2)) 
} 
+0

спасибо. Когда я реализую toIndex, я получаю вывод типа «long». от ошибки, несоответствие типа; found: Long required: geotrellis.spark.io.index.KeyIndex [geotrellis.spark.SpatialKey], я должен получить вывод типа geotrellis.spark.io.index.KeyIndex – vds

+0

да, в моем примере я использовал Int в качестве параметра типа , вы должны использовать geotrellis.spark.SpatialKey. я отредактировал мой ответ для вас –

+0

Спасибо :) это сработало! – vds