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