201

type の変数が与えられた場合、ScalaGraphicsでそれをキャストするにはどうすればよいですか?Graphics2D

4

2 に答える 2

284

推奨される手法は、パターンマッチングを使用することです。これにより、問題の値が指定されたタイプではない場合を適切に処理できます。

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

このブロックは、メソッドのセマンティクスを複製しasInstanceOf[Graphics2D]ますが、柔軟性が高くなります。たとえば、さまざまなタイプに異なるブランチを提供して、同時に複数の条件付きキャストを効果的に実行できます。最後に、キャッチオール領域で例外をスローする必要はありませんnull戻る(またはできればNone)か、。なしで機能するフォールバックブランチに入ることができますGraphics2D

要するに、これは本当に行く方法です。構文的には少しかさばりasInstanceOfますが、柔軟性を追加することはほとんどの場合価値があります。

于 2009-05-31T15:21:16.673 に答える
227
g.asInstanceOf[Graphics2D];
于 2009-05-31T06:26:51.823 に答える