给定任何类类型的实例,如何找出它继承或实现了哪个父类和/或特征



假设存在如下的类/trait定义:

trait T1 {}
trait T2 {}
abstract class A{}
class B {}
class C extends A with T1 with T2 {}
val b = new B with T1
val c = new C

给定b和c的实例,我如何获得它们的继承信息(即知道b实现了T1, c实现了A, T1和T2) ?

谢谢你的帮助。

如果你不知道对象的类型(你有一些AnyRef),只是想测试它是否是一些类或trait的实例,那么你可以使用isInstanceOf:

b.isInstanceOf[T2]

如果你想将其转换为该类型,那么使用asInstanceOf

b.asInstanceOf[T1]

另一方面,如果你不知道你在搜索什么,那么你可以尝试使用Java反射。要获取已实现的特性和接口列表,请使用:

c.getClass.getInterfaces

获取超类使用:

c.getClass.getSuperclass

最新更新