Dan*_*wak 281
首选技术是使用模式匹配.这使您可以优雅地处理有问题的值不是给定类型的情况:
g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}
Run Code Online (Sandbox Code Playgroud)
该块复制了该asInstanceOf[Graphics2D]方法的语义,但具有更大的灵活性.例如,您可以为各种类型提供不同的分支,同时有效地执行多个条件转换.最后,你真的不需要在catch-all区域抛出一个异常,你也可以返回null(或者最好None),或者你可以进入一些没有的回退分支Graphics2D.
简而言之,这真的是要走的路.它在语法上比笨重一点asInstanceOf,但增加的灵活性几乎总是值得的.
Eug*_*ota 223
g.asInstanceOf[Graphics2D];
Run Code Online (Sandbox Code Playgroud)