У меня есть класс, где мне нужен метод apply[T]
, где T
может быть только Foo
или Bar
. Кроме того, метод должен вести себя по-разному в зависимости от того, является ли он Foo
или Bar
. Из-за стирания типа я не могу просто создать методы apply[Foo]
и apply[Bar]
(это была моя первая попытка). Чтобы решить эту проблему, я попытался сделать что-то вроде этого
def apply[T](ds: Dataset[T]): Dataset[T] = {
ds match {
case ds: Dataset[Foo] => ...
case ds: Dataset[Bar] => ...
case _ => ???
}
}
но это не работает из-за стирания типа T
. Кроме того, это даже не ограничивает возможность вызова этого метода только с T
типа Foo
или Bar
, он просто «ничего не делает», когда он не относится к одному из этих двух типов. Как я могу заставить этот метод применять иметь эти свойства?
Спасибо.