Comment puis-je lancer une variable dans Scala?

Étant donné une variable avec le type Graphics , comment puis-je la Graphics2D en Graphics2D dans Scala?

La technique préférée consiste à utiliser la correspondance de motif. Cela vous permet de gérer correctement le cas où la valeur en question n’est pas du type donné:

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

Ce bloc reproduit la sémantique de la asInstanceOf[Graphics2D] , mais avec une plus grande flexibilité. Par exemple, vous pouvez fournir différentes twigs pour différents types, en effectuant simultanément plusieurs conversions conditionnelles. Enfin, vous n’avez pas vraiment besoin de lancer une exception dans la zone fourre-tout, vous pouvez également retourner null (ou de préférence, None ), ou vous pouvez entrer une twig de secours qui fonctionne sans Graphics2D .

En bref, c’est vraiment la voie à suivre. C’est un peu plus volumineux sur le plan de la asInstanceOf , mais la flexibilité supplémentaire en vaut presque toujours la peine.

 g.asInstanceOf[Graphics2D];