Скажем, у меня есть следующие типы
class Foo
trait Bar
Есть ли способ сделать метод, который принимает параметр Type, T и определить, является ли это T баром? Например,
def isBar[T <: Foo: Manifest] =
classOf[Bar].isAssignableFrom(manifest[T].erasure)
К сожалению, isBar[Foo with Bar]
- false
, потому что стирание, кажется, уничтожает mixins.
Кроме того, manifest[Foo with Bar] <:< manifest[Bar]
- false
Возможно ли это вообще?
Я посмотрел на этот вопрос: Как узнать, расширяет ли тип Scala reified определенный родительский класс?
но этот ответ не работает со смешанными чертами, поскольку они, кажется, стираются, как показано выше.