我正在尝试向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
?我是在尝试做一些绝对疯狂的事情吗?