在Scala中获取给定Class实例的超类的简短功能方法是什么?
我能想到的就是这个
def supers(cl: Class[_]): List[Class[_]] = {
cl :: Option(cl.getSuperclass).map(supers).getOrElse(Nil)
}
有没有人知道一些带有一些奇特功能结构的简短形式?
答案 0 :(得分:4)
不完全是花哨的功能构造,但(略微)更短:
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提供的类也是如此。