challenge メソッド名一覧の表示

リフレクション系のお題の続編です。

「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。 引数に関しては都合のいいように仮定して構いません(全部0個、など)。

メソッドという概念がない言語の場合は、 「複数の関数への参照を持っているようなオブジェクト(たとえばパッケージとかモジュールとか)から"test_"で始まる関数をすべて呼び出す」と読み替えても構いません。

Posted feedbacks - Scala

setAccessibleしないといけないのがなんとも。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Foo {
  private def test_foo = println("test_foo_private")
  def test_foo2 = println("test_foo_public")
  protected def test_fuga = println("test_fuga")
  def public_foo = println("public_foo")
}

val foo = new Foo
foo.getClass.getDeclaredMethods.filter(_.getName.startsWith("test_"))
   .map(x=>{x.setAccessible(true);x}).foreach(_.invoke(foo,Array()))

Index

Feed

Other

Link

Pathtraq

loading...