は、次のコードスニペットを見てください。Scalaで一般的に型付けされたメソッドをオーバーライドするときに、具体的な型を返すにはどうすればよいですか?
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.Time
import org.apache.spark.streaming.Seconds
abstract class MQTTDStream[T <: Any](ssc: StreamingContext) extends DStream(ssc) {
override def compute(validTime: Time): Option[RDD[T]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1)) //This line doesn't compile
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
私は次のエラーを取得:
type mismatch; found : Int(1) required: T
を私はどれを拡張するためにTを宣言した、なぜコンパイラが文句を言っていますか? IntはAnyのサブタイプですね。
ありがとうございます!
アップデート:2.9.16:
abstract class MQTTDStream[T](ssc: StreamingContext) extends DStream[Int](ssc) {
override def compute(validTime: Time): Option[RDD[T]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1)) //This line doesn't compile
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
EDIT:2.9.16:アレクセイへ
おかげで、このDSTREAM [INT]から延びているが、それでも同じエラーに変更
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.Time
import org.apache.spark.streaming.Seconds
abstract class MQTTDStream[T](ssc: StreamingContext) extends DStream[Int](ssc) {
override def compute(validTime: Time): Option[RDD[Int]] =
Some(ssc.sparkContext.parallelize(Seq(1, 2, 3), 1))
override def dependencies = Nil
override def slideDuration = Seconds(1) // just an example
}
どういう意味ですか?T <:Any?すべてのタイプはAnyのサブタイプです。また、どのラインがエラーを投げているのか明確ではない。 – Samar
は、コンパイルしていない行にコメントを追加しました –