1

我有一个接收对象(如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(),但它不适合我。请帮帮我!!!

4

1 回答 1

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")
 | }
于 2012-07-20T17:50:53.143 回答