Нет. См. разницу между методами и функциями . Методы не передаются в качестве параметров под капот - они раскрываются в функциональные объекты при передаче в какой-либо другой метод / функцию. Эти функциональные объекты являются экземплярами анонимных, сгенерированных компилятором классов, и не имеют имени (или, по крайней мере, являются анонимными классами, имеют какое-то искаженное имя, к которому вы можете получить доступ, используя отражение, но, вероятно, не нужно).
Итак, когда вы делаете:
def foo() {}
def bar(f: () => Unit) {}
bar(foo)
что на самом деле происходит при последнем вызове:
bar(() => foo())
Теоретически, вы можете найти имя метода, в который оборачивается передаваемый объект функции. Вы можете выполнить интроспекцию с помощью байт-кода, чтобы проанализировать тело метода apply
объекта функции f
в методе bar
выше и сделать вывод, исходя из того, как называется метод. Однако это и приближение, и излишество.