0
私はJavaインターフェイス方法は、互換性のないタイプ
Javaインタフェースを実装して形質を持っていEvent
のタイプはAnyRef
で定義されていますか?これはで失敗します。
Error:(35, 16) overriding method deserialize in trait Scheme of type (x$1: java.nio.ByteBuffer)java.util.List[Object];
method deserialize has incompatible type
override def deserialize(bytes: ByteBuffer): util.List[Event] = {
私は、コードは、Javaコレクションに手動でEvent
を追加するために書き換える場合は、それが正常に動作します。
override def deserialize(bytes: ByteBuffer): util.List[AnyRef] = {
val v: Seq[Event] = parseData(bytes)
val vArray = new util.ArrayList[AnyRef]()
v.map(vArray.add(_))
vArray
}
お返事ありがとうございます。 Javaのリストに要素を追加すると、2番目のバージョンで 'Event'型を受け入れる方法は? – jamborta
さて、 'Event'は' AnyRef'のサブクラスであり、それは "Is a ..."の関係です(すべて "dogs"は "animals"、すべての 'Event'sは' AnyRef'sです)。どこでもそれを渡すことができます 'AnyRef'は期待されています。 'Event'を' List [AnyRef] 'に追加することはできますが、' Event'バック(キャストなし)を_get_できません。 'list.get(0)'は 'AnyRef'を返します。これが 'List [Event]'だった場合は、 'Event'となります。 – Dima
意味があります。ありがとう。 – jamborta