Мне нужны все имена методов в чертах scala, которые я определил. Я знаю, что это звучит как тривиальная проблема, но я не мог найти никаких ответов, касающихся черты, они все вращались вокруг классов.
Чтобы быть конкретным, мне нужны имена для всех абстрактных методов. Но если я могу получить имя всех методов, независимо от того, абстрактные они или нет, это тоже работает.
Скажи, у меня есть эта черта
trait A { def myDefinedInt: Int = 2 def myAbstractString: String }
Мне нужен список всех методов (или, желательно, только абстрактные)
Я относительно новичок в Scala, поэтому, хотя я получаю классы и интерфейсы. Черты являются новыми для меня.
Заранее спасибо!
Всего 1 ответ
Вы можете получить все методы с помощью getDeclaredMethods
а затем просто отфильтровать абстрактные методы:
import java.lang.reflect.Modifier
classOf[A]
.getDeclaredMethods
.filter(m => Modifier.isAbstract(m.getModifiers))
.map(_.getName)
.foreach(println)
Это печатает: myAbstractString
.