0

スレッドで使用する実行可能なクラスを作成しようとしています。このクラスの目的は、KafkaStreamを取得し、ストリームを介して受信するすべてのメッセージに関数を適用することですが、クラスにストリームを渡そうとすると、次のコンパイラ エラーが発生します: "scala:45: class KafkaStream takes typeパラメーター"。

class streamOperator extends Runnable {
  def run(f: String => Any, stream: KafkaStream) {
    for (messageAndTopic <- stream) {
      var message = new String(messageAndTopic.message)
      f(message)
    }
  }
}

これがクラスです。この問題は、Scala のクラスにパラメーターを渡す方法に関係しているに違いありませんが、私はまだ Scala に慣れていません。

さらに、関数を実行可能にすることは可能ですか? クラスよりも関数に渡す方が簡単だと思います。

4

1 に答える 1

0

解決策は、コメントで提案されているように、KafkaStream[?] を渡すことでした。この場合、? でしたKafkaStream[Array[Byte], Array[Byte]]。私KafkaStream[T]もうまくいくと思いますが、可能であれば実際の型を渡す方が良いと思います。

于 2015-07-15T22:12:45.730 に答える