使用对象查找类

时间:2012-07-20 17:34:54

标签: scala reflection

我有一个接收对象的函数/方法(如def fun(t : Object))。现在如果有人创建了一个类并使用一个对象调用我的函数,有没有办法找出它来自哪个类?

例如伪代码

class Test {         
   def sum() {} // some arbitrary method
}

def fun(t : Object) {
   val ob = t.asInstanceOf[Test]
   ob.sum() // this will work if I know the classname (Test) 
}

但是如果用户创建了一个新类并向我发送了该对象我应该如何对其进行类型转换并访问这些对象?有没有办法使用给定的对象找到类类型?我试着打电话给t.getClass(),但这对我不起作用。请帮帮我!!!

1 个答案:

答案 0 :(得分:0)

您可以使用模式匹配来匹配您在函数中接收的对象。当您在案例类上匹配时,您可以访问该类的函数并可以调用它们。在下面的示例中,您可以在相应的匹配中调用f或b上的函数。例如f.toString

scala> def f(o: Object) = o match{
 | case f:Foo => println("o is a Foo")
 | case b:Bar => println("o is a Bar")
 | case _   => println("o is unknown")
 | }