1

タイプに拡張メソッドを追加しようとしSerializableていますが、クラスの理解に穴があるようです。ここに私がやろうとしていることの基本のスニペットがあります:

class YesSer extends Serializable

class NoSer 

implicit class SerOps[S <: Serializable](s: S) {
  def isSer(msg: String) = {
    println(msg)
    assert(s.isInstanceOf[Serializable])
  }
}

val n = new NoSer
val ln = List(new NoSer, new NoSer)
val y = new YesSer
val ly = List(new YesSer, new YesSer)
// n.isSer("non Serializable")
ln.isSer("list of non Serializable")
y.isSer("Serializable")
ly.isSer("list of Serializable")

List伸びるSerializable

n.isSerがコンパイルされないことは明らかですがln.isSer、その「内部」タイプが NoSer であるため、コンパイルもすべきではないようです。Serializeableの内側の型になんらかの強制がありlnますか? 私は絶対におかしなことをしようとしていますか??

4

1 に答える 1