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 に答える