2011-08-25 36 views
10

假设有类/特征定义如下:给定任何类类型的实例,如何找出它继承或实现哪个父类和/或特征?

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)?

感谢您的帮助。

+0

http://stackoverflow.com/questions/2809463/how-to-get-list-of-特征混合在指定的类中/ 2811089 –

回答

18

如果你不知道该对象(你有一些AnyRef)的类型,只是想测试它是否是某个类或特性的情况下,那么你可以使用isInstanceOf

b.isInstanceOf[T2] 

如果您然后想将它转换为这种类型,然后使用asInstanceOf

b.asInstanceOf[T1] 

从另一方面,如果你不知道你要搜索的内容,然后你可以尝试使用Java反射。为了得到落实性状和接口的列表使用:

c.getClass.getInterfaces 

要获得超使用:

c.getClass.getSuperclass 
+0

谢谢,_Easy Angel_。 – Adrian

相关问题