For this you do not need a third-party library:
sealed trait MyTrait
case object SubClass1 extends MyTrait
case object SubClass2 extends MyTrait
import scala.reflect.runtime.{universe => ru}
val tpe = ru.typeOf[MyTrait]
val clazz = tpe.typeSymbol.asClass
clazz.knownDirectSubclasses.foreach(println)
Output:
SubClass1 object
SubClass2 object
source
share