не существует конструкции уровня языка, которая поддерживает это точно, но, как указывает @dveim, я считаю, что это скоро.
Если вы спрашиваете с конкретным практическим случаем использования, у вас есть несколько вариантов. вы можете использовать Either[SomeType1, SomeType2]
, в котором есть все конструкции, необходимые для представления этой идеи (но это не привязка к типу).
в качестве альтернативы, вы можете достичь этого эффекта, используя классы типов:
sealed trait Or[T] {
def someMethod(t: T): String
}
object Or {
implicit object OrInt extends Or[Int] {
def someMethod(t: Int): String = "int"
}
implicit object OrLong extends Or[Long] {
def someMethod(t: Long): String = "long"
}
}
object Test {
import Or._
def test[T](value: T)(implicit or: Or[T]): String =
or.someMethod(value)
}
извини тривиальный пример, но то, что вы получаете здесь:
sealed trait
, который означает, что вы можете ограничить другие от добавление большего количества экземпляров в семейство Or
(если они не могут редактировать фактический файл, в котором он определен)
- хорошо типизированный способ указать, какую функциональность вы хотите иметь ppen в двух разных случаях
Вы собираетесь проверить с помощью instanceof позже? – Ven
@Ven образец соответствует – user3663882
хорошо, поэтому экземпляр. Работы, так долго вы знаете тип erasure – Ven