如何在 Scala 中实现一个 Java 抽象接口
How to implement a Java abstract interface in Scala
如何在 scala 中实现 Java 抽象接口?
抽象接口:
public abstract interface KeyIndex<K>
extends Serializable
{
public abstract long toIndex(K paramK);
public abstract Seq<Tuple2<Object, Object>> indexRanges(Tuple2<K, K> paramTuple2);
}
看来,你的KeyIndex
class是用Java写的。在 Scala 中,每个未标记为 private
或 protected
的字段都是 public。 Scala 中没有 public
关键字。
但是在 Scala 中实现 Java class 是可能的:
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))
}
如何在 scala 中实现 Java 抽象接口?
抽象接口:
public abstract interface KeyIndex<K>
extends Serializable
{
public abstract long toIndex(K paramK);
public abstract Seq<Tuple2<Object, Object>> indexRanges(Tuple2<K, K> paramTuple2);
}
看来,你的KeyIndex
class是用Java写的。在 Scala 中,每个未标记为 private
或 protected
的字段都是 public。 Scala 中没有 public
关键字。
但是在 Scala 中实现 Java class 是可能的:
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))
}