【发布时间】:2019-11-08 12:53:29
【问题描述】:
以下函数采用Serializable 的列表和对列表中的各个元素进行序列化的 lambda。
val os = BufferOutputStream()
fun <T : Serializable> writeList(list: List<Serializable>, emitter: (T, BufferOutputStream) -> Unit) {
os.writeInt(list.size)
for (v in list) { // v is of type Serializable
emitter(v as T, os) // why do we need to cast V as T?
}
}
当T 已经必须实现Serializable 时,为什么我需要将Serializable 类型的v 转换为T? <T : Serializable> 不是确定采用 Serializable 的函数/lambda 必须采用 T 吗?
【问题讨论】:
-
“
<T : Serializable>是否没有确定采用Serializable的函数/lambda 必须采用T?”确实如此。但是您正试图反过来:将Serializable传递给采用T的函数。