我如何在Scala中转换一个变量?

给定类型为Graphics的变量, 我如何在Scala中将它转换为Graphics2D ?< / p >
94654 次浏览
g.asInstanceOf[Graphics2D];

首选的技术是使用模式匹配。这允许你优雅地处理问题值是给定类型的的情况:

g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}

这个块复制了asInstanceOf[Graphics2D]方法的语义,但是具有更大的灵活性。例如,您可以为各种类型提供不同的分支,有效地同时执行多个条件强制转换。最后,你不需要真的在catch-all区域抛出异常,你也可以返回null(或者最好是None),或者你可以输入一些没有Graphics2D也能工作的回退分支。

总之,这才是正确的选择。它在语法上比asInstanceOf更笨重一点,但增加的灵活性几乎总是值得的。