Мы можем использовать отражение, чтобы получить имена методов следующим образом:
object Foo { def bar(name:String, age:Int) = {} }
val foo = Foo.getClass
val methods = foo.getMethods.filter(_.getName.startsWith("b"))
methods.foreach(m => println(m.getName))
Теперь мне нужно получить типы и имена параметров.
- Сохраняются ли имена параметров в байт-коде? Если да, как получить к ним доступ?
- Если ответ выше отрицательный, можем ли мы как-то сохранить имена с помощью аннотаций?
- Может кто-нибудь привел пример, чтобы прочитать типы и способы их использования. Меня интересуют только функции, имеющие параметры типа
String
и / илиArray[String]
.
[EDIT:] Java-версия решения тоже в порядке.
[EDIT:] Аннотации кажутся одним из способов сделать это. Однако поддержка аннотаций Scala не так хороша. Связанный вопрос SO.
javap -l
распечатает таблицу символов, если таковая существует; вы можете проверить разницу, протестировав какjava
, так иjava -g:vars
, чтобы увидеть файл класса с информацией об имени символа и без нее. - person Dave Newton   schedule 04.10.2011