Étant donné une variable de type Graphics
, comment puis-je le transtyper en Graphics2D
à Scala?
La technique préférée consiste à utiliser un filtrage par motif. Cela vous permet de gérer avec élégance le cas où la valeur en question est et non du type donné:
g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}
Ce bloc reproduit la sémantique de la asInstanceOf[Graphics2D]
méthode, mais avec plus de flexibilité. Par exemple, vous pouvez fournir différentes branches pour différents types, réalisant efficacement plusieurs distributions conditionnelles en même temps. Enfin, vous n'avez pas vraiment à lancer une exception dans la zone fourre-tout, vous pouvez aussi retourner null
(ou de préférence , None
), ou vous pouvez entrer une branche de secours qui fonctionne sans Graphics2D
.
En bref, c'est vraiment la voie à suivre. C'est un peu plus volumineux syntaxiquement que asInstanceOf
, mais la flexibilité supplémentaire en vaut presque toujours la peine.
g.asInstanceOf[Graphics2D];