Не совсем причудливые функциональные конструкции, но (немного) короче:
def supers(cl: Class[_]): List[Class[_]] = {
if (cl == null) Nil else cl :: supers(cl.getSuperclass)
}
scala> class Foo; class Bar extends Foo; class Baz extends Bar
defined class Foo
defined class Bar
defined class Baz
scala> supers(classOf[Baz])
res9: List[Class[_]] = List(class Baz, class Bar, class Foo, class java.lang.Object)
Обратите внимание, что это дает вам класс и все его суперклассы, но, опять же, то же самое делает тот, который предоставляется OP.1004 *