Как я могу привести переменную в Scala?
Дана переменная с типом Graphics
как мне это Graphics2D
в Скале?
2 ответа
Предпочтительным методом является использование сопоставления с образцом. Это позволяет изящно обрабатывать случай, когда рассматриваемое значение не относится к данному типу:
g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}
Этот блок повторяет семантику asInstanceOf[Graphics2D]
метод, но с большей гибкостью. Например, вы можете предоставить разные ветви для разных типов, эффективно выполняя несколько условных приведений одновременно. Наконец, вам не нужно создавать исключение в области всеобщего охвата, вы также можете вернуть null
(или предпочтительно, None
), или вы можете ввести резервную ветку, которая работает без Graphics2D
,
Короче говоря, это действительно путь. Это немного более синтаксически громоздким, чем asInstanceOf
, но дополнительная гибкость почти всегда стоит того.