如何在Scala中转换变量?

时间:2009-05-31 06:26:09

标签: scala

给定类型为Graphics的变量, 如何将其转换为Scala中的Graphics2D

2 个答案:

答案 0 :(得分:278)

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

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

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

简而言之,这真的是要走的路。它比asInstanceOf在语法上更笨重,但增加的灵活性几乎总是值得的。

答案 1 :(得分:221)

g.asInstanceOf[Graphics2D];