У нас есть Selenium WebElement, который мы получаем из Java API, но мы создали класс Scala, Element и смешали более специфические черты (например, Clickable, Submittable и т. Д.).
Наш метод выглядит следующим образом:
toScalaElement(e : WebElement) = {
e.type match {
case Input => new Element(e) with Submittable
case Link => new Element(e) with Clickable
...
case _ => new Element
}
}
Тип возвращаемого значения всегда Element, так как это корневой класс всех случаев.Тем не менее, мы хотели бы сохранить черты миксина при его возврате.
Было рекомендовано взглянуть на разработчиков в API коллекций Scala, но мы не уверены, как это относится к этому конкретному приложению.Очевидно, что если есть лучший способ, чем черты mixins, то это решение будет оценено.
Обновление : я изменил регистр, чтобы сопоставить его с подтипами вместо строк, но суть вопроса остается неизменной,