我如何在Scala中投入一个variables?
给定一个Graphics
types的variables,我该如何将它转换为Scala中的Graphics2D
?
首选的技术是使用模式匹配。 这使您可以正常处理所讨论的值不是给定types的情况:
g match { case g2: Graphics2D => g2 case _ => throw new ClassCastException }
该块复制asInstanceOf[Graphics2D]
方法的语义,但具有更大的灵活性。 例如,您可以为各种types提供不同的分支,同时有效地执行多个条件转换。 最后,你并不需要在catch-all区域抛出一个exception,也可以返回null
(或者最好是None
),或者你可以input一些没有Graphics2D
后备分支。
总之,这是真正的路要走。 它比asInstanceOf
在语法上更大asInstanceOf
,但增加的灵活性几乎总是值得的。
g.asInstanceOf[Graphics2D];