Как я могу привести переменную в Scala?

Дана переменная с типом Graphicsкак мне это Graphics2D в Скале?

2 ответа

Решение

Предпочтительным методом является использование сопоставления с образцом. Это позволяет изящно обрабатывать случай, когда рассматриваемое значение не относится к данному типу:

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

Этот блок повторяет семантику asInstanceOf[Graphics2D] метод, но с большей гибкостью. Например, вы можете предоставить разные ветви для разных типов, эффективно выполняя несколько условных приведений одновременно. Наконец, вам не нужно создавать исключение в области всеобщего охвата, вы также можете вернуть null (или предпочтительно, None), или вы можете ввести резервную ветку, которая работает без Graphics2D,

Короче говоря, это действительно путь. Это немного более синтаксически громоздким, чем asInstanceOf, но дополнительная гибкость почти всегда стоит того.

g.asInstanceOf[Graphics2D];
Другие вопросы по тегам