gpt4 book ai didi

scala - 如何避免在 Scala 中使用 asInstanceOf

转载 作者:行者123 更新时间:2023-12-04 17:53:40 26 4
gpt4 key购买 nike

目前我的代码需要类转换

val dataWriter: BytesDataWriter = createDataWriter

def createDataWriter(p: SomeClass) =
p.create_datawriter().asInstanceOf[BytesDataWriter]
create_datawriter方法将返回父类(super class) DataWriter。而不是使用 asInstanceOf 进行转换,我试过这种方法
val dataWriter: BytesDataWriter = createDataWriter(p)  match {
case writer: BytesDataWriter => writer
case _ => throw new ClassCastException
}

这太冗长了,以防万一不起作用。有没有更好的替代类类型转换?

最佳答案

如果你可以用非 BytesDataWriter 做某事,你会使用第二种方法。结果,或获得更好的错误消息:

val dataWriter: BytesDataWriter = p.create_datawriter() match {
case writer: BytesDataWriter => writer
case other => throw new Exception(s"Expected p to create a BytesDataWriter, but got a ${other.getClass.getSimpleName} instead!")
}

否则,请使用 asInstanceOf .

关于scala - 如何避免在 Scala 中使用 asInstanceOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com