1. ホーム
  2. scala

[解決済み】Scalaで変数をキャストする方法は?

2022-04-14 13:28:19

質問

型である変数が与えられたとき Graphics , にキャストするにはどうすればよいですか? Graphics2D をScalaで使うことはできますか?

どのように解決するのですか?

望ましい手法は、パターン・マッチを使うことです。 これによって、問題の値が ではない を指定します。

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

このブロックは asInstanceOf[Graphics2D] メソッドに比べ、より柔軟性があります。 たとえば、さまざまな型に対して異なる分岐を用意し、複数の条件付きキャストを同時に効果的に実行することができます。 最後に、あなたは 本当に はキャッチオール領域で例外を投げる必要がない。 null (あるいは、できれば None を使用せずに動作するフォールバックブランチを入力することもできます。 Graphics2D .

要するに、これが本当の意味での方法なのです。 よりも構文的に少しかさばります。 asInstanceOf しかし、柔軟性を高めることは、ほとんどの場合、それに見合うだけの価値があります。